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)。也许我需要等待什么的。