редукс, нормализр, магазин доступа mapDispatchToProps - PullRequest
0 голосов
/ 06 сентября 2018

Если у меня есть объект данных, как показано ниже

 {
   items: [
     {id: 1, selected: false},
     {id: 2, selected: false}
   ]
 }

Выполнение этого через нормализатора дало бы мне что-то вроде

{
  entities: {
    1: {selected: false},
    2: {selected: false}
  },
  result: {
    items: [1, 2]
  }
}

Обычно у меня есть компонент Items, который отображает состояние на реквизит, как это:

const mapStateToProps = (state) => {
  return state.result;
};

У меня проблема с компонентом Items, у меня была бы кнопка сохранения, которая должна отправить состояние хранилища на сервер.

Мне не удалось найти хороший способ получить доступ к хранилищу для денормализации данных перед их отправкой на сервер.

1) Я предпочитаю не включать сущности в MapStateToProps, поскольку компоненту элементов не нужно знать об этом.

2) MergeProps также кажется неоптимальным из-за проблем с производительностью.

Прямо сейчас я обращаюсь к магазину напрямую, просто импортируя магазин и обращаясь к нему в моих методах отправки, которые, кажется, работают, но это нарушает разделение интересов, есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 06 сентября 2018

Судя по описанию вашей проблемы, я полагаю, что вы отправляете данные магазина с помощью метода внутри компонента кнопки «Сохранить» или другого компонента React. Если вы сделаете это, вы должны будете предоставить отправляющие данные этому компоненту независимо от того, что.

Альтернативным решением является обработка вызова API с помощью промежуточного программного обеспечения. Такие библиотеки, как redux-saga или redux-thunk, могут аккуратно обработать ваш случай. Они предназначены для обработки асинхронных потоков и обеспечения доступа к хранилищу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...