Куда поместить API-вызовы в Redux, которые изменяют реквизиты, но не изменяют состояние? - PullRequest
0 голосов
/ 04 июля 2018

Я вызываю конечную точку API, чтобы заполнить таблицу большим количеством строк. Пользователи могут щелкнуть строку, а затем перенаправляются на страницу, на которой они могут редактировать элемент. Они никогда не могут ничего редактировать в самой таблице. Они всегда перенаправляются на отдельную страницу.

Я довольно много думал об этом и считаю, что это не состояние . Это не может измениться. Правильно?

Вопрос: Где, в приложении Redux, я получаю данные из моего API и передаю результат как подпорки в таблицу? Буду ли я все еще делать это внутри Redux action? Это кажется неправильным, поскольку мое действие вообще не изменит состояние: данные, которые я получу, будут отображаться только статически Но: если не в Redux action, то где еще? В самом компоненте? Я также не уверен в этом, потому что все действия приложения в папке / файлах действий кажутся изящными.

Что бы вы порекомендовали?

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

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Вы можете вызвать свою конечную точку API в действии избыточности и затем передать ответ в полезной нагрузке редуктору, который переведет данные, возвращенные из вашего APi, в состояние.

0 голосов
/ 04 июля 2018

Если вы не хотите получать доступ к данным результата из состояния:

  1. вызов API с избыточным действием
  2. получить данные (и отфильтровать, если хотите) в редукторе
  3. поместите данные результатов в главное хранилище редуксов.
  4. использовать данные результата напрямую с this.props.<result_data_name> в компоненте реакции.

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

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

0 голосов
/ 04 июля 2018

Вы можете смешивать состояние вашего приложения с локальным состоянием Redux и React. Это не так. Это зависит от того, как вы настроили логику вашего приложения. Например, в вашей ситуации, если эти извлеченные данные не понадобятся нигде, кроме этого компонента, вы можете хранить эти данные в состоянии вашего компонента.

Ваш компонент будет извлекать данные, удерживать состояние, а затем передавать соответствующие реквизиты дочернему компоненту (где данные будут редактироваться), а все остальное вы будете делать там. Также никакие другие компоненты не будут нуждаться в этих данных. Если в такой ситуации состояние вашего компонента кажется мне логичным (как учащемуся).

...