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]);