【发布时间】:2020-07-24 06:17:48
【问题描述】:
const [data, setData] = useState(undefined);
useEffect(() => {
if (changeRequests.data) {
setData(setDefaultState(changeRequests.data));
}
}, [changeRequests.data, setData,setDefaultState ]);
const setDefaultState = data => {
let names = getNameList(data);
setSelectedItems(names);
}
“setDefaultState”函数使 useEffect Hook(第 78 行)的依赖关系在每次渲染时都发生变化。将它移到 useEffect 回调中。或者,将“setDefaultState”定义包装到它自己的 useCallback() Hook 中
const [resultsFallback] = useState([]);
const getNameList = res => {
let jList = getJData(res);
let jNames = resultsFallback;
jNames = jList.map(j => {
return `${j.joggers}`
});
return jNames;
}
'getNameList' 函数使 useCallback Hook 的依赖关系在每次渲染时都发生变化。要解决此问题,请将“getNameList”定义包装到它自己的 useCallback() Hook
【问题讨论】:
-
您可以将
setDefaultState包含在依赖项列表中,这将使警告消失 -
如果 setDefaultState 没有在其他地方使用,您可以将它移到 useEffect 函数中,或者按照 Barry 的建议进行操作
标签: reactjs