Ответы пользователя по тегу Redux
  • Что должно содаржаться в reducer'e или где хранить функционал?

    @DragonSpirit
    React Native Developer
    Вообще тут несколько вариантов решения.
    Как вариант для начала использовать одно поле loading для стора и вызывать отдельный action перед сетевыми вызовами, например
    так
    // todo/actions.js
    export const getTodos = (dispatch) => () => {
      dispatch({ type: 'GET_TODOS_REQUEST' });
      return fetch('/api/v1/todos')
        .then((todos) => dispatch({ type: 'GET_TODOS_SUCCESS', payload: todos })
        .catch((error) => dispatch({ type: 'GET_TODOS_FAILURE', payload: error, error: true });
    };
    
    // todo/reducer.js
    const initialState = { todos: [] };
    export const todoReducer = (state = initialState, action) => {
      switch(action.type) {
        case 'GET_TODOS_REQUEST': 
          return { ...state, isFetching: true };
        case 'GET_TODOS_SUCCESS': 
          return { ...state, isFetching: false, todos: action.payload };
        case 'GET_TODOS_FAILURE': 
          return { ...state, isFetching: false, errorMessage: action.payload.message };
        default: 
          return state;
      }
    };

    Чтобы не было кучи перерендеров стоит использовать селекторы в контейнерах.
    Если есть несколько одинаковых сущностей, для которых нужны однотипные action'ы, то можно использовать утиный подход
    Ответ написан
  • Как редактировать объект в store redux?

    @DragonSpirit
    React Native Developer
    Связано с механизмом работы самого redux и концепцией иммутабельности в него заложенной. Проверять через deepEqual что объект изменился это слишком дорогая операция, которая должна выполняться на каждый редьюсер. Подробнее можно почитать тут
    Ответ написан