Redux操作必须是普通对象

时间:2018-03-29 13:46:43

标签: javascript reactjs ecmascript-6 redux

我有以下操作代码:

let nextTodoId = 0

export const addTodo = text => ({
  type: 'ADD_TODO',
  id: nextTodoId++,
  text
})
 
export const setVisibilityFilter = filter => ({
  type: 'SET_VISIBILITY_FILTER',
  filter
})
 
export const toggleTodo = id => ({
  type: 'TOGGLE_TODO',
  id
})

export const getResult = () => { type: 'GET_RESULT' }
 
export const VisibilityFilters = {
  SHOW_ALL: 'SHOW_ALL',
  SHOW_COMPLETED: 'SHOW_COMPLETED',
  SHOW_ACTIVE: 'SHOW_ACTIVE'
}

当调度“getResult”时,我收到此错误:“操作必须是普通对象”。

我没有归还这样的物体吗?

export const getResult = () => { type: 'GET_RESULT' }

如果我将上述内容更改为:

export const getResult = { type: 'GET_RESULT' }

然后一切都很好

enter image description here

即使用可能的解决方案修改代码后,我仍然会收到错误

1 个答案:

答案 0 :(得分:2)

您的代码

export const getResult = () => { type: 'GET_RESULT' }

转化为

var getResult = function() { 
    { type: 'GET_RESULT' }
};

返回undefined,因此返回错误。如果将其更改为表达式,它将起作用:

export const getResult = () => ({ type: 'GET_RESULT' })

那是因为它转化为:

var getResult = function() { 
    return { type: 'GET_RESULT' };
};