【发布时间】:2021-04-10 19:55:20
【问题描述】:
我在 React 中使用上下文提供程序在多个组件之间共享数据。但是,由于一个值从我的一个子组件中发生了变化,它会重新呈现我的所有其他组件,这在一定程度上会导致性能问题。所以我想阻止我的子组件重新渲染。我尝试使用 React.memo() 但每当我设置 Context Provider 的状态时它仍然在渲染。
const Authenticator = React.memo(() => {
const [myChat, setMyChat] = useContext(ChatContext);
console.log("rerender"); // gets called everytime on click
return (
<Button
title="click me"
onPress={() => setMyChat({ text: "hello" })}
></Button>
);
});
我的上下文提供程序如下所示:
const ChatProvider = ({ children }) => {
const [myChat, setMyChat] = useState([]);
return (
<ChatContext.Provider value={[myChat, setMyChat]}>
{children}
</ChatContext.Provider>
);
};
我的 App.js 看起来像这样:
<ChatProvider>
<Authenticator />
</ChatProvider>
【问题讨论】:
标签: reactjs react-native memoization react-context