Я использую поставщик контекста в React для обмена данными между несколькими компонентами. Однако, поскольку значение изменяется от одного из моих подкомпонентов, он повторно отображает все мои другие компоненты, что частично приводит к проблемам с производительностью. Поэтому я хочу предотвратить повторную визуализацию моих дочерних компонентов. Я пробовал использовать React.memo (), но он все еще отображается всякий раз, когда я устанавливаю состояние поставщика контекста.
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>