REACT useEffect() 称为不需要的
REACT useEffect() called unwanted
我正在使用 useEffect
,只要状态值 selected
更新,它就会更新我的组件:
const Thumbnail = ({ image }) => {
const [state, dispatch] = useContext(Context);
const [checked, setChecked] = useState(getChecked());
useEffect(() => {
setChecked(getChecked())
}, [state.selected])
...
}
export default Thumbnail
但是每当我的状态中的任何内容更新时都会调用该函数。例如,当其他组件更新 state.all
时,正在调用 useEffect()
方法。
我怎样才能避免这种情况并且只在 state.selected
被更改时调用 useEffect()
方法?
我想你需要的是useMemo。
useMemo
只会在其中一个依赖项发生更改时重新计算记忆值。
const checked = useMemo(() => getChecked(), [state.selected]);
我正在使用 useEffect
,只要状态值 selected
更新,它就会更新我的组件:
const Thumbnail = ({ image }) => {
const [state, dispatch] = useContext(Context);
const [checked, setChecked] = useState(getChecked());
useEffect(() => {
setChecked(getChecked())
}, [state.selected])
...
}
export default Thumbnail
但是每当我的状态中的任何内容更新时都会调用该函数。例如,当其他组件更新 state.all
时,正在调用 useEffect()
方法。
我怎样才能避免这种情况并且只在 state.selected
被更改时调用 useEffect()
方法?
我想你需要的是useMemo。
useMemo
只会在其中一个依赖项发生更改时重新计算记忆值。
const checked = useMemo(() => getChecked(), [state.selected]);