在REACTJS中渲染时出现周期性错误

问题描述

得到“无法读取未定义的属性'值'”错误,有时代码呈现良好,并且输出按预期显示。可以推断出,“值”在呈现之前未加载到属性“填充”中。我如何将其校正为仅在将值加载到组件中时呈现

import React,{ useMemo,useState,useEffect,useCallback } from "react";
import { geoPath,geoMercator,geoIdentity } from "d3-geo";
import * as d3 from "d3";
const Map = ({ stateGeographies,geoData,statecode,plotdata }) => {
  const [circledata,setCircleData] = useState([]);
  const width = 750;
  const height = 450;
  const projection = geoMercator().fitSize([width,height],{
    type: "FeatureCollection",features: stateGeographies
  });
  const path = useMemo(() => {
    if (!geoData) return null;
    return geoPath(geoIdentity());
  },[geoData]);

  useEffect(() => {
    const features = () => {
      return stateGeographies.map((feature) => {
        const district = feature.properties.district;
        const state = feature.properties.st_nm;
        const obj = Object.assign({},feature);
        const val = plotdata.filter((p) => {
          const datavalue = p.place === district ? p.value : null;
          return datavalue;
        });
        obj.id = `${statecode}-${state}${district ? "-" + district : ""}`;
        obj.value = val;
        return obj;
      });
    };
    setCircleData(features);
  },[statecode,stateGeographies,plotdata]);
  var color = d3
    .scaleThreshold()
    .domain([2000,5000,8000,10000,15000])
    .range(["#FFA07A","#FA8072","#CD5C5C","#DC143C","#FF0000"]);

  return (
    <svg width={1000} height={600} viewBox="0 0 800 450">
      <g className="states">
        {circledata.map((d,i) => (
          <path
            key={`path-${i}`}
            d={geoPath().projection(projection)(d)}
            className="state"
            fill={color(!d.value ? 0 : d.value[0].value)}
            /*fill={function (d) {
            return color([d.value[0].value]);
          }}*/
          />
        ))}
      </g>
    </svg>
  );
};

export default Map;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)