不能在回调中调用 useSelector
useSelector can not be called inside a callback
我对 redux / 工具包还很陌生。
我需要在我的 React 功能组件中使用 redux hook useSelector
获取数据,但数据并没有快速准备好,因此 useSelector
似乎将 return 一个空数组首先,然后当数据准备就绪时,它将 return 填充的数据数组。
起初,我认为 useSelector 可能是异步的,但事实并非如此。每当我正在寻找的数据的值发生变化并且不适合我的功能需求时,Redux 都会重新呈现我的组件。在某些情况下,我不希望我的组件重新渲染(特别是当只有数据的一个原子部分发生变化时,奇怪的是我的所有组件也会重新渲染)。
我首先尝试的是将我的数据作为组件状态的一部分,这样我就可以决定何时更新它,我在 useState
中调用了 useSelector
接受回调
const [data, setData] = useState(()=> useSelector(...))
但是我得到了错误:
useSelector can not be called inside a callback
有什么建议吗?
您可以使用useEffect。
const selectorData = useSelector(...);
const [data, setData] = useState(selectorData);
useEffect(() => {
setData(selectorData)
}, [selectorData])
如果你这样做,组件不会每次都重新渲染,它只会在你的选择器数据到来时重新渲染。
我对 redux / 工具包还很陌生。
我需要在我的 React 功能组件中使用 redux hook useSelector
获取数据,但数据并没有快速准备好,因此 useSelector
似乎将 return 一个空数组首先,然后当数据准备就绪时,它将 return 填充的数据数组。
起初,我认为 useSelector 可能是异步的,但事实并非如此。每当我正在寻找的数据的值发生变化并且不适合我的功能需求时,Redux 都会重新呈现我的组件。在某些情况下,我不希望我的组件重新渲染(特别是当只有数据的一个原子部分发生变化时,奇怪的是我的所有组件也会重新渲染)。
我首先尝试的是将我的数据作为组件状态的一部分,这样我就可以决定何时更新它,我在 useState
中调用了 useSelector
接受回调
const [data, setData] = useState(()=> useSelector(...))
但是我得到了错误:
useSelector can not be called inside a callback
有什么建议吗?
您可以使用useEffect。
const selectorData = useSelector(...);
const [data, setData] = useState(selectorData);
useEffect(() => {
setData(selectorData)
}, [selectorData])
如果你这样做,组件不会每次都重新渲染,它只会在你的选择器数据到来时重新渲染。