Установить значения initialState из базы данных с помощью React + Redux - PullRequest
0 голосов
/ 16 октября 2019

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

import { Map, fromJS } from 'immutable';
import { INIT } from '../../actions/actionConstants';

const initialState = {
  usersLogin: Map(
      {
    id: '',
    name : 'test',
    email: 'test01@gmail.com',
    password: 'test',
    remember: true
  }

  )
};
const initialImmutableState = fromJS(initialState);
export default function reducer(state = initialImmutableState, action = {}) {
  switch (action.type) {
    case INIT:
      return state;
    default:
      return state;
  }
}

Как я могу получить в const все пользовательские значения, которые есть в базе данных?

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Вам нужно сделать пару вещей здесь

1- Вам нужно написать создателя действия, который выполняет выборку этого API для вас, а затем отправить действие с ответом API, скажем, SET_DB_VALUES

2- Затем вам нужно отправить это действие, вы можете сделать это в componentDidMount вашего корневого элемента Redux (который упакован провайдером и получает хранилище)

3 - Измените ваш редуктор, чтобы слушатьэто действие, например

switch (action.type) {
case INIT:
  return state;
case SET_DB_VALUES:
  return {
     ...state,
     action.payload
  }
default:
  return state;

}

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

Надеюсьпоможет вам начать

1 голос
/ 16 октября 2019

Так же, как и все остальное, но вам нужно, чтобы он был синхронным, если он реализован как ваш фрагмент.

FWIW, у меня почти всегда есть асинхронная загрузка состояния БД, потому что вызовы БД могут быть неудачными. У меня всегда есть жестко запрограммированный запасной вариант, а затем устанавливаю состояние после завершения асинхронного вызова БД (или API / и т. Д.).

Кроме того, в общем, общие вещи "приложения пользователя", которые я держу довольно высоко в магазинетак как это требуется почти везде, поэтому при входе в систему / и т.д. Я установил его, и к тому времени, когда он нужен где угодно, он почти всегда доступен - но в случае асинхронного сбоя всегда требуется запасной вариант.

(Не имеет отношения, но в этом нет причин иметь отдельные случаи... э-э ... дело.)

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