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]);