【发布时间】:2017-02-16 06:22:22
【问题描述】:
在下面的代码中,数据(state, action) 没有通过combineReducers 传递给reducers。它会生成以下错误。可能只是我犯的一个小错误。链接到 JSFiddle:https://jsfiddle.net/bengrunfeld/1h0t59uf/
import React from 'react'
import { render } from 'react-dom'
import { combineReducers } from 'redux'
import { Constants } from './constants/constants'
const goal = (state = 0, action) => {
(action.type === Constants.ADD) ?
state + action.payload:
state
}
const target = (state = 0, action) => {
(action.type === Constants.REMOVE)?
state - action.payload:
state
}
const reducer = combineReducers({
goal,
target
})
const state = 10
const newState = reducer(state, {
type: Constants.REMOVE,
payload: 5
})
render(
<div>
<p>{newState}</p>
</div>,
document.getElementById('main')
)
错误信息
main.bundle.js:28054 Uncaught Error: Reducer "goal" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined.
at http://localhost:3000/main.bundle.js:28054:13
at Array.forEach (native)
at assertReducerSanity (http://localhost:3000/main.bundle.js:28049:25)
at combineReducers (http://localhost:3000/main.bundle.js:28104:5)
at Object.<anonymous> (http://localhost:3000/main.bundle.js:13236:42)
at __webpack_require__ (http://localhost:3000/main.bundle.js:20:30)
at Object.<anonymous> (http://localhost:3000/main.bundle.js:31673:18)
at __webpack_require__ (http://localhost:3000/main.bundle.js:20:30)
at module.exports (http://localhost:3000/main.bundle.js:66:18)
at http://localhost:3000/main.bundle.js:69:10
【问题讨论】:
标签: javascript ecmascript-6 redux react-redux