Reactjs REACT useffect()调用了不需要的

Reactjs REACT useffect()调用了不需要的,reactjs,components,use-effect,Reactjs,Components,Use Effect,我正在使用useffect,每当我的状态的值selected更新时,它应该更新我的组件: const Thumbnail = ({ image }) => { const [state, dispatch] = useContext(Context); const [checked, setChecked] = useState(getChecked()); useEffect(() => { setChecked(getChecked()

我正在使用
useffect
,每当我的状态的值
selected
更新时,它应该更新我的组件:

const Thumbnail = ({ image }) => {

    const [state, dispatch] = useContext(Context);
    const [checked, setChecked] = useState(getChecked());

    useEffect(() => {
        setChecked(getChecked())
    }, [state.selected])

...

}
export default Thumbnail
但是每次更新我状态中的任何内容时,都会调用该函数。例如,当其他组件更新
state.all
时,将调用
useffect()
方法

我怎样才能避免这种情况,并且只在
state.selected
被更改时调用
useffect()
方法?

我想您需要的是

usemo
仅当其中一个依赖项发生更改时,才会重新计算已记录的值


const checked=usemo(()=>getChecked(),[state.selected])

什么是
状态类型。选择的
?如果它不是原语,它的引用可能会更改,从而导致效果运行