Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 组件装载后上下文更改触发的useEffect_Reactjs - Fatal编程技术网

Reactjs 组件装载后上下文更改触发的useEffect

Reactjs 组件装载后上下文更改触发的useEffect,reactjs,Reactjs,我试图使用useffect在context上运行一个函数,但是在组件挂载之后。否则,函数将在首次加载上下文时运行,并给出错误的结果。我很想在加载后运行的另一个useffect中嵌套一个useffect,但我不能。如何触发useffect等待componentDidLoad运行?是否需要将功能组件还原为类函数 这是我运行的效果 useEffect(() => { let count = Object.keys(context).filter((x) => context[x

我试图使用
useffect
context
上运行一个函数,但是在组件挂载之后。否则,函数将在首次加载上下文时运行,并给出错误的结果。我很想在加载后运行的另一个
useffect
中嵌套一个
useffect
,但我不能。如何触发
useffect
等待componentDidLoad运行?是否需要将功能组件还原为类函数

这是我运行的效果

  useEffect(() => {
    let count = Object.keys(context).filter((x) => context[x] !== "").length;
    numChange = count;
  }, [context]); <=== run AFTER the original update of the context
useffect(()=>{
let count=Object.keys(context).filter((x)=>context[x]!==”).length;
numChange=计数;

},[上下文] 当您的
useffect
具有依赖项并且希望将其作为
componentDidMount
时,添加一个ref检查就足够了:

const isMounted = useRef(false);

useEffect(() => {
  if (!isMounted.current) {
    let numChange = Object.keys(context).filter((x) => context[x] !== "")
      .length;
    setState(numChange);
    isMounted.current = true;
  }
}, [context]);

当您的
useffect
具有依赖项并且希望将其作为
componentDidMount
时,添加一个ref检查就足够了:

const isMounted = useRef(false);

useEffect(() => {
  if (!isMounted.current) {
    let numChange = Object.keys(context).filter((x) => context[x] !== "")
      .length;
    setState(numChange);
    isMounted.current = true;
  }
}, [context]);

在下面的一段中进行了澄清在下面的一段中进行了澄清这项工作,但我认为因为我的一个值来自一个API调用,所以计数是1(而不是5)。也许我需要等待什么的。这是可行的,但我认为因为我的一个值来自一个API调用,所以计数是1(而不是5)。也许我需要等待什么的。