Redux диспетчерское действие - PullRequest
0 голосов
/ 23 марта 2020

Я просто пытаюсь запустить простую программу редукции, когда я использую индекс командного узла, он показывает мне ошибку, что действие должно быть простым объектом ниже, это мой код для этого

const redux = require('redux')
const createStore = redux.createStore
const BUY_CAKE = 'BUY_CAKE'
function buyCake () {
  return
  {
    type: BUY_CAKE
  }
}

const initialState = {
  numOfCakes: 10
}

const reducer = (state = initialState, action) => {
  switch (action.type) {
    case BUY_CAKE: return {
      ...state,
      numOfCakes: state.numOfCakes - 1
    }
    default: return state
  }
}

const store = createStore(reducer)
console.log("initial state is ", store.getState())
const unsubscribe = store.subscribe(() => console.log("updated", store.getState()))
store.dispatch(buyCake())
store.dispatch(buyCake())
store.dispatch(buyCake())
store.dispatch(buyCake())
unsubscribe()

при отправке (buyCake ( )) тогда только это показывает ошибку, но если я делаю store.dispatch ({type: BUY_CAKE}), тогда код работает нормально, почему происходит ошибка

1 Ответ

0 голосов
/ 23 марта 2020

Потому что ваше заявление на возврат неправильно отформатировано. Помните об этой смертельной возможности:

JavaScript автоматически вставит точки с запятой. Без скобок JavaScript игнорирует следующие строки и возвращает без значения.

Это ваша функция с точками с запятой, которая будет возвращать undefined:

function buyCake(){
return;
{
type:BUY_CAKE
};
};

Решение: переместите фигурные скобки в строку return:

function buyCake(){
  return {
      type: BUY_CAKE
    }
}

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