React-native + Redux (Combine Reducers): создание структуры состояния - PullRequest
0 голосов
/ 04 октября 2018

Я занимаюсь разработкой реактивного и нового для редукса приложения.У меня 3 экрана и почти все состояния всех экранов зависят друг от друга.Например, на первом экране сканируется продукт, на втором экране отображаются сведения о клиенте, а на третьем экране отображается сводная информация о продуктах и ​​клиенте.Я бьюсь о стену уже 2 дня, чтобы создать государственную структуру, и в итоге получаю ОбъединениеReducers .Но в комбинированных редукторах каждый редуктор поддерживает свой собственный фрагмент состояния и не позволяет мне получать доступ или обновлять состояние другого редуктора.Итак, Q1.Должен ли я продолжать использовать combieReducers или использовать только один редуктор?Q2.Если считается, что комбинировать значенияReducers в порядке, как получить доступ или обновить одно и то же состояние для всех редукторов?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

используя промежуточное ПО вы можете достичь функциональности

export default ({ dispatch, getState }) => next => action => {
  next(action);
 const newAction = { ...action, payload: "",state:getState () };
    dispatch(newAction);
};
0 голосов
/ 04 октября 2018

для первого вопроса да, вам нужно объединить, потому что ОбъединитьReducers даст все данные редукторов в одном объекте

пример:

const rootReducer = combineReducers({
  posts: PostsReducer,
  form: formReducer
});

внутри компонента

function mapStateToProps(state) {
  return { posts: state.posts };
}

export default connect(mapStateToProps, { createPost })(PostsIndex);

в приведенном выше коде через Redux Connect вы можете получить доступ к состоянию, которое создается объединением redura, например this.props.posts внутри вашего компонента

Чтобы обновить, вам нужно запустить действие, которое проходит черезвсе редукторы и в зависимости от типа можно обновить состояние

пример:

export function createPost(values, callback) {
  const request = axios
    .post(`${ROOT_URL}/posts${API_KEY}`, values)
    .then(() => callback());

  return {
    type: CREATE_POST,
    payload: request
  };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...