Skip to content

页面首次渲染不展示canvas图表,多刷新几次才出现图表,报警告:组件需绑定 ec 变量。已传递ec:{{onInit}}参数 #950

Open
@junjieWangYzh

Description

提问前应该做的事

请确保提问前做了以下事,将完成的项目的 [] 改为 [x]

需提供的信息

将符合项的 [] 改为 [x],并补充需要的信息:

简单描述问题:

页面首次渲染报警告:组件需绑定 ec 变量,canvas组件不渲染。多刷新几次才出现图表

预期效果:

首次渲染即可看到canvas图

实际效果:

image

复现环境:

  • 在微信开发工具中存在该问题
  • 在真机上存在该问题

核心代码:

使用ec-canvas为提供的最新版本,使用taro3.5.7进行开发

核心代码如下,options中的数据部分由业务页面在useEffect 中获取数据后注入
`
import * as InternalEcharts from '@/components/ec-canvas/echarts';

const { pixelRatio: canvasDpr, platform } = wx.getSystemInfoSync();

const BaseChart: React.FC = props => {
const { height, option } = props;
const [isComplete, setIsComplete] = useState(false);
const chartRef = useRef();
const canvasRef = useRef();

useEffect(() => {
    if (option && isComplete && chartRef.current) {
        chartRef.current.setOption(option, { notMerge: true });
    }
}, [option, isComplete]);

const style = { height };

const onChartInit = useCallback((canvas, width, height, dpr) => {
    console.log('dpr=', dpr);
    canvasRef.current = canvas;
    const chart = InternalEcharts.init(canvas, null, {
        width,
        height,
        devicePixelRatio: platform !== 'devtools' && ['mac', 'windows'].includes(platform) ? canvasDpr : dpr, // new
    });
    chartRef.current = chart;

    canvas.setChart(chart);

    setIsComplete(true);

    return chart;
}, []);

return (
    <View style={style} className="echarts">
        <ecanvas ec={{ onInit: onChartInit }} />
    </View>
);

};

export default BaseChart;`

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions