Как обрабатывать одно значение в магазине Redux?

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

// 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.info(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.info(action.payload) //  a new hashed long string from server
        return {
           ...state ,
           Object.assign({}, state, {_token: action.payload})
        }
     default: 
       return state

  }
}

Ваш первый случай немного отличается от второго. Прежде всего, если вы используете такой редуктор, ваше состояние tokenReducer в первом случае будет просто нить. Но во втором случае вы возвращаете объект и пытаетесь распространить свое состояние, строку! и какой-то неправильный объектный ключ назначен, нет ключа (строка Object.assign). Так что, вероятно, вы здесь не об этом думаете. Возможно, вы можете использовать редуктор для одного такого свойства состояния, как это, но как устроен дизайн вашего приложения, как вы будете использовать другие части состояния?

devserkan 19.10.2018 17:31

В настоящее время я использую первый редуктор, и я думаю, что с ним что-то не так, я не знаю почему, но я думаю, что что-то не так, поэтому я разместил этот вопрос здесь, первый редуктор - это правильный способ справиться с выпуск или второй ...

a_m_dev 19.10.2018 18:10

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

devserkan 19.10.2018 18:21

Если вы передаете это состояние другому редуктору, то почему вы сохраняете _token там, если вы не изменяете его в другом редукторе?

devserkan 19.10.2018 18:24

На самом деле в первом подходе нет ничего плохого.

johnson lai 20.10.2018 06:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
5
357
0

Другие вопросы по теме