如下图所示,我有一个基本的反应上下文设置。
我的愿望是消耗上下文的子组件应该只在上下文数据更改时重新渲染,但我发现情况并非如此。
如果我更新与上下文无关的 call setData2
,则会触发状态更新Container
,随后会触发重新计算并导致消费子更新。
有问题的子组件已经在使用React.memo
,所以它只会在它的useContext
钩子导致它时更新。但是上下文会在更新时Container
更新,即使没有data1
改变。
有可能解决这个问题吗?
const Container = () => {
const [data1, setData1] = useState(...);
const [data2, setData2] = useState(...);
return (
<MyContext.Provider value={{ data1, setData1 }}>
// child component hierarchy
</MyContext.Provider>
);
};