首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >useEffect依赖项不更新useEffect

useEffect依赖项不更新useEffect
EN

Stack Overflow用户
提问于 2022-06-24 01:01:35
回答 1查看 51关注 0票数 0

我有一个useEffect挂钩,它在更改依赖项后不进行更新。依赖项是通过道具传递的状态变量。下面是代码的内容:

代码语言:javascript
复制
const MyComponent = ({resource}) => {

// runs after changing resource state
console.log(resource)

useEffect(() => {
    setLoading(true);
      // doesnt run after changing resource state
      console.log(resource)
      setVariable(setDefaultValue());
    
  }, [resource]);

}

MyComponent是针对两种状态之一“option1”或“option2”呈现的,组件根据状态呈现不同的状态。我这样称呼这个组件:

代码语言:javascript
复制
const [resource, setResource] = useState('option1');
const handleChange = (e) => {
    setResource(e.target.value);
};

return (
    <MyComponent resource={resource} />
)

我不明白为什么在更改资源状态之后useEffect不运行。位于console.log外部的useEffect显示更改状态,但useffect中的console.log不会在更改状态之后运行。

EN

回答 1

Stack Overflow用户

发布于 2022-06-24 02:38:52

哦,您可以更改上面的代码,请尝试:

代码语言:javascript
复制
//Parent Component
const [resource, setResource] = useState('option1');
const [variable,setVariable] = useState();
const [loading,setLoading] = useState(false);
useEffech(()=>{
  let fetch_api = true;
  setLoading(true);
  fetch(URL,options).then(res=>res.json())
    .then(res=>{
       if(fetch_api){
          setVariable(setDefaultValue());
          setLoading(false);
       }
    });
    return ()=>{
        //remove memory
        fetch_api = false;
    }
},[resource]);
const handleChange = (e) => {
    setResource(e.target.value);
};

return (
    <MyComponent variable={variable} />
)


//Child Component
const MyComponent=({variable})=>{
  
  return <>
    
  </>
}

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72738030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档