Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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
Javascript 显式触发useeffect而不改变依赖项_Javascript_Reactjs - Fatal编程技术网

Javascript 显式触发useeffect而不改变依赖项

Javascript 显式触发useeffect而不改变依赖项,javascript,reactjs,Javascript,Reactjs,我有下面的示例代码 useEffect(() => { const fetchData = async _ => { let payload = { } post("getdata", payload) .then(results => { console.log("results: ", results); }) .catch(e

我有下面的示例代码

  useEffect(() => {
    const fetchData = async _ => {
        let payload = { }
      post("getdata", payload)
        .then(results => {
         console.log("results: ", results);
         })
        .catch(err => {
           console.log(err);
        });
    };
   
  }, [
    dep1,
    dep2,
    dep3
  ]);
我不想创建单独的函数并将其放入useeffect中

如何在不更改任何依赖项的情况下触发此使用效果


谢谢

useffect
钩子中重构
fetchData
函数,并用
useCallback
钩子将其包装,您可以在组件内的其他地方调用它:

传递内联回调和依赖项数组
useCallback
将返回一个回拨的备忘录版本,该版本仅在其中一个依赖项发生更改时才会更改


作为旁注,请确保依赖项列表中的变量(
dep1
dep2
dep3
)实际在钩子中使用,因为我不确定您提供的
fetchData
函数的实现是否已完成。

您基本上想手动调用
post
,不仅是post,里面还有更多的代码。所以我想执行useeffect中的所有代码,就像任何依赖项更改一样,将其全部转换为一个外部函数,该函数可以被任何东西调用,包括effect回调。我知道这种方式,但我想看看是否有任何东西可能触发这种情况,正如我刚刚开始学习reactNo一样,react钩子和依赖关系都与组件生命周期相关联。
const fetchData = useCallback(() => {
  let payload = {};
  post("getdata", payload)
    .then((results) => {
      console.log("results: ", results);
    })
    .catch((err) => {
      console.log(err);
    });
}, [dep1, dep2, dep3]);

useEffect(() => {
  fetchData(); // call when fetchData has changed (due to dep1/dep2/dep3 change)
}, [fetchData]);