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
答案 0 :(得分:0)
在所有情况下都可以使用此方法的唯一方法是将func()
移到使用它的孩子那里。而且由于data
在父级和子级中都使用,因此我将其传递给子级,并在运行func()
后将对它的所有修改推回父级,以便修改后的data
set()
在父级中。
答案 1 :(得分:0)
像这样
将数据作为useState中的参数传递给函数。没关系,我没有数据。所以我使用了'abc'。
useEffect(() => { //on page load
const data = 'abc';
setData(data)
func(data)
}, []);
下一步将数据作为函数中的参数。
const func = (data) => {
console.log(data); //now it will have abc
};