Объясните мне назначение кода в примере приложения Next. js (canary), которое использует Redux - PullRequest
0 голосов
/ 14 июля 2020

Следуя примеру

Я пытаюсь создать собственное приложение на Далее. js используя Redux

Но я не могу понять назначение следующих кодов в store. js file. Первый: `

const bindMiddleware = (middleware) => {
  if (process.env.NODE_ENV !== 'production') {
    const { composeWithDevTools } = require('redux-devtools-extension')
    return composeWithDevTools(applyMiddleware(...middleware))
  }
 return applyMiddleware(...middleware)
}

И второй:

 const reducer = (state, action) => {
    if (action.type === HYDRATE) {
        const nextState = {
          ...state, // use previous state
          ...action.payload, // apply delta from hydration
        }
        if (state.count) nextState.count = state.count // preserve count value on client side navigation
        return nextState}
     else {
        return combinedReducer(state, action)
      }

}

Почему в первом случае мы должны связывать Middleware, если мы можем просто сделать applyMiddleware(thunkMiddleware) ? во втором случае , как я понимаю, if(state.count) относится к import count from './count/reducer'

Итак, мой вопрос: должен ли я сделать то же самое, если, например, у меня есть редуктор с информацией о пользователе if(state.userReducer) и import userReducerfrom './user/userReducer'

1 Ответ

1 голос
/ 14 июля 2020

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

Что касается второго вопроса, они делают (state.count) для защиты кода. Если они попытаются изменить часть состояния, а она на самом деле не существует, возникнут проблемы. Поэтому вместо этого давайте проверим его наличие перед редактированием.

...