Как обработать одно значение в магазине Redux? - PullRequest
0 голосов
/ 19 октября 2018

Давайте предположим, что у нас есть этот магазин:

// initialState.js file
export default = {
  _token: 'a hashed long string from server',
  user: {
    key: value,
    ... many more
  }
  .. many more
}

и вот редуктор ТОКЕНА:

import * as types from '../actions/actionTypes'
import initialState from './initialState'

export default function tokenReducer(state = initialState._token, action) {
  switch(action.type) {
    case types.CHANGE_TOKEN:
        console.log(action.payload) //  a new hashed long string from server
        return action.payload // payload is a token string that comes from server
     default: 
       return state

  }
}

Это нормально?

Я имею в видучто я использовал ТОЛЬКО initialState.token часть хранилища в своем редукторе, чтобы предотвратить возврат целого состояния с помощью Object.assign или оператора распространения, я просто обновил строку (токен).

Этоправильный способ изменить только одно строковое значение из хранилища, или я должен вернуть все состояние и использовать Object.assign, как показано ниже?

import * as types from '../actions/actionTypes'
import initialState from './initialState'

export default function tokenReducer(state = initialState._token, action) {
  switch(action.type) {
    case types.CHANGE_TOKEN:
        console.log(action.payload) //  a new hashed long string from server
        return {
           ...state ,
           Object.assign({}, state, {_token: action.payload})
        }
     default: 
       return state

  }
}
...