首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React + Redux + Babel (SyntaxError in ...state意外令牌)

React + Redux + Babel (SyntaxError in ...state意外令牌)
EN

Stack Overflow用户
提问于 2018-09-06 11:35:57
回答 2查看 506关注 0票数 0

我试着重复这个例子:https://github.com/reduxjs/redux/tree/master/examples/async/src

但是我使用了ReactReduxBabel的最后一个版本(例如Reactivev15.5)。在这个例子中,我没有改变任何东西,然后我尝试用webpack构建它,我在这里得到了SyntaxError:

代码语言:javascript
复制
  22 |     case INVALIDATE_SUBREDDIT:
  23 |       return {
> 24 |         ...state,
     |         ^
  25 |         didInvalidate: true
  26 |       }

./reducers/index.js

代码语言:javascript
复制
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回答之后,我做出如下回答:

代码语言:javascript
复制
npm install --save-dev babel-preset-stage-3

在你的.babelrc里

代码语言:javascript
复制
{
    "presets": ["env", "stage-3", "react"]
}

上一次错误消失了,但我在./containers/App.js中又取了一个错误

代码语言:javascript
复制
  19 |   }
  20 |
> 21 |   handleChange = nextSubreddit => {
     |                ^
  22 |     this.props.dispatch(selectSubreddit(nextSubreddit))
  23 |   }
  24 |

更新2:

效果很好。

代码语言:javascript
复制
{
    "presets": ["env", "stage-3", "react"],
    "plugins": ["transform-object-rest-spread", "transform-decorators-legacy", "transform-class-properties"]
}

谢谢大家的建议!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-06 11:47:35

预置问题

第一

代码语言:javascript
复制
npm install --save-dev babel-preset-stage-3

在你的.babelrc

代码语言:javascript
复制
{
    "presets": ["env", "stage-3", "react"]
}
票数 1
EN

Stack Overflow用户

发布于 2018-09-06 11:39:39

您将连接对象,因此您应该遵循ES6语法。

您当前的语法是错误的。

代码语言:javascript
复制
return {
    ...state,
    didInvalidate: true
  }

应该是这样

代码语言:javascript
复制
return {
    ...state,
    ...{ didInvalidate: true }
  }

完全替换它,然后再试一次。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52203216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档