Как предотвратить повторный рендеринг context react

#reactjs #redux #context-api

#reactjs #redux #реагировать-контекст

Вопрос:

Я создал простое приложение react с контекстом в качестве управления состоянием, однако поведение этого контекста по умолчанию всегда повторно отображает каждое состояние, даже если изменения внесены только для одного состояния. Как я могу предотвратить такое поведение, как в Redux, где компонент будет повторно отображаться, если будет изменено используемое состояние?

Я создал это простое приложение в Codesandbox, вы можете попробовать его на https://wu0qz.csb.app /

Спасибо

Комментарии:

1. Разделить контекст на несколько контекстов ContextA и ContextB? Если вы попытаетесь использовать этот подход, вам, вероятно, потребуется использовать a useMemo в вашем компоненте поставщика, чтобы значение контекста, содержащее как значение состояния, так и setState, не воссоздавалось для контекста, который не изменился.

2. Вот как работает react. Если компонент ( Controller т.Е.) Выполняется повторно, то все поддерево этого компонента также выполняется повторно. Controller перенаправляет, когда его состояние обновляется с помощью Comp2 .

3. Допустим, у меня есть десять состояний, которыми нужно управлять. Должен ли я разделить их на разные 10 файлов контекста? или есть другой способ сохранить состояния чистыми в одном контексте, не вызывая другие?

4. В этом случае вы, вероятно, захотите использовать контейнер состояний (redux) или реализовать что-то подобное, обернув каждый компонент пользовательского интерфейса и передавая из контекста только те переменные, которые им нужны

5. значит, context на самом деле используется только для передачи реквизита? не для хранения состояний?