Как сделать так, чтобы отправка redux была локальной для экземпляра, а не глобальной?

#reactjs #redux #react-redux

Вопрос:

Предположим, на той же странице,

У меня есть два экземпляра одного и того же компонента. Оба они вызывают одну и ту же отправку, за исключением разных параметров, и, таким образом, влияют друг на друга.

Есть ли какой-нибудь способ исправить это, кроме как избавиться от redux?

Спасибо

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

1. dispatch предполагается, что это повлияет и на то, и на другое? Если да, то как вы не можете исправить это, удалив redux? В принципе, я говорю, что redux-это не проблема, у вас может быть некоторая логическая зависимость.

2. Если они звонят одинаково dispatch , они отправляются в один и тот же магазин Redux. Вы хотите сказать, что хотите, чтобы эти два компонента работали независимо друг от друга? Если это так, то каждому из них потребуется свое собственное состояние и набор действий.

3. нет, отправка должна влиять только на одного… даже если они являются одним и тем же переделом. Да, думаю, мне нужно удалить redux. Спасибо всем

Ответ №1:

Сама цель Redux-это единая общая часть состояния(с высоким контролем над изменениями с помощью действия/редуктора, промежуточного программного обеспечения для повышения гибкости, оболочек, связанных с производительностью, и т. Д. — Но это всего лишь дополнения)

Если вы действительно хотите, чтобы компонент имел независимые данные, вам не следует использовать Redux, а интегрировать локальное состояние с useState или useReducer (или this.state , если по какой-либо причине вы используете компоненты класса). Кстати, useReducer использует ту же концепцию редуктора/действия, но поскольку в ней нет концепции промежуточного программного обеспечения, я бы предложил useState сначала рассмотреть, прежде чем пытаться каким-либо образом интегрировать существующие действия Redux с useReducer

Мне это кажется маловероятным, но в случае, если вы хотите повторно использовать ту же логику для этих компонентов, а также для действий Redux (скажем, та же конечная точка, та же логика для обработки ответа), вы можете извлечь некоторую логику в отдельную функцию, чтобы создатель действий Redux и эти компоненты воспользовались ее повторным использованием