我试着重复这个例子:https://github.com/reduxjs/redux/tree/master/examples/async/src
但我使用最后版本的React
,Redux
和Babel
(例如React v15.5)。我在这个例子中没有改变任何东西,然后我尝试用webpack构建它,我在这里得到了SyntaxError:
22 | case INVALIDATE_SUBREDDIT:
23 | return {
> 24 | ...state,
| ^
25 | didInvalidate: true
26 | }
在./reducers/index.js
const posts = (state = {
isFetching: false,
didInvalidate: false,
items: []
}, action) => {
switch (action.type) {
case INVALIDATE_SUBREDDIT:
return {
...state,
didInvalidate: true
}
case REQUEST_POSTS:
return {
...state,
isFetching: true,
didInvalidate: false
}
case RECEIVE_POSTS:
return {
...state,
isFetching: false,
didInvalidate: false,
items: action.posts,
lastUpdated: action.receivedAt
}
default:
return state
}
}
这有什么不对?
更新:
在AdityaParab回答之后我做了:
npm install --save-dev babel-preset-stage-3
在你的.babelrc
{
"presets": ["env", "stage-3", "react"]
}
最后一个错误消失了,但我在./containers/App.js
中再拿一个:
19 | }
20 |
> 21 | handleChange = nextSubreddit => {
| ^
22 | this.props.dispatch(selectSubreddit(nextSubreddit))
23 | }
24 |
更新2:
工作得很好。
{
"presets": ["env", "stage-3", "react"],
"plugins": ["transform-object-rest-spread", "transform-decorators-legacy", "transform-class-properties"]
}
谢谢大家的建议!
预设问题
第一
npm install --save-dev babel-preset-stage-3
在你的.babelrc
{
"presets": ["env", "stage-3", "react"]
}
你将要连接对象,所以你应该遵循ES6语法。
你目前的语法错了。
return {
...state,
didInvalidate: true
}
应该是这样的
return {
...state,
...{ didInvalidate: true }
}
在所有情况下更换它,然后再试一次。