【发布时间】:2021-01-14 12:55:17
【问题描述】:
useCallback 中使用的依赖项以 null 的形式出现,即使它是在 useCallback 之外调用它时填充的。我什至尝试删除 useCallback 并在常规函数中使用 data 变量。它仍然为空。知道为什么会这样吗?
const [data, setData] = useState(null);
useEffect(() => { //on page load
const data = fetchData();
setData(data)
}, []);
const func = useCallback(async (payload) => {
console.debug(data); //null
if (data) //call api with payload
}, [data]);
console.debug(data); //correct population of data
return <MyComponent onSubmit={func} /> //passed to and called from second child down from here
【问题讨论】:
-
data = fetchData()是异步函数吗? -
获取她的一个很好的例子(通过钩子或类组件):reactjs.org/docs/faq-ajax.html
-
是的。这只是数据来源的快速演示。每次页面刷新时都存在正确的数据。它在 func() 中使用时不可用
-
所以当一切都发生在同一个组件中时,这是有效的。但是当我将函数传递给子 Modal 并从那里调用它时,它调用
func()没有问题。但此时data对func()不可用。我看到了一些关于 forwardRefs 的 Hooks 错误,但我真的不明白为什么/如何使用这些错误(即使是文档)或者这是否会有所不同。我还尝试将data传递给子模态,然后将其直接传递回func(payload, data)以查看它是否会以这种方式捕获它。还是没有运气。
标签: reactjs react-hooks