setState一个CSV文件一旦返回null

ar5n3qh5  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(92)

我需要用d3读取csv文件并将结果存储在状态变量中。我在useEffect Hook中分离了初始化,但当我尝试使用状态变量时,它返回null:

const ItalyMapRegion = ({ w, h, onChangeRegion }) => {

  const [zone, setZone] = useState(null);

  useEffect(() => {
    console.log("once");
    d3.csv(data).then(function (data) {
      setZone(data);
    });
  }, []);

  useEffect(() => {
    console.log(zone); //this return null, why?
        ......

我做错了什么?

hujrc8aj

hujrc8aj1#

因为在第一个useEffect中发生的操作是异步的。尝试将zone变量作为依赖项添加到第二个useEffect,并检查它是否存在:

const ItalyMapRegion = ({ w, h, onChangeRegion }) => {

  const [zone, setZone] = useState(null);

  useEffect(() => {
    console.log("once");
    d3.csv(data).then(function (data) {
      setZone(data);
    });
  }, []);

  useEffect(() => {
    if (zone) {
      console.log(zone);
    }
  }, [zone]);

相关问题