使用带有React和Redux的扩展运算符(...)

时间:2016-11-21 20:11:25

标签: reactjs redux react-redux

我正在使用Redux构建一个反应应用程序。我有一个减速器返回:

const posts = (state={posts:[], search_criterion:''}, action) => {
  switch (action.type) {
    case 'SOME_EVENT':
      return {
        ...state,
        search_criterion:action.search_criterion
      }
    default:
      return state
  }
}
export default posts

当我使用Webpack构建时,我得到:

Module build failed: SyntaxError: Unexpected token (x:y)

指向...

有什么想法吗?我做错了什么?

webpack.config.js

const webpack = require('webpack');

module.exports = {
  context: __dirname + "/app",
  entry: {
    javascript: "./app.js"
    // ,html: "./index.html",
  },

  output: {
    filename: "app.js",
    path: __dirname + "/server/js",
  },

  module: {
    loaders: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        loader: 'babel-loader',
      },
      {
        test: /\.html$/,
        loader: "file?name=[name].[ext]",
      },
    ],
  },

  //alient app settings settings
  plugins: [
    new webpack.DefinePlugin({
      'process.env': {
        'NODE_ENV': JSON.stringify('test'),
        'APIHOST': JSON.stringify('http://localhost:8081'),
      }
    })
  ],
}

的package.json

{
  "name": "react-project",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "private": true,
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack --config ./webpack.config.js",
    "start": "NODE_ENV=test APIHOST=http://localhost:8081 babel-node server/server.js --presets es2015,stage-2"
  },
  "babel": {
    "presets": [
      "es2015",
      "react"
    ]
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "axios": "^0.15.2",
    "babel": "^6.5.2",
    "babel-cli": "^6.18.0",
    "babel-core": "^6.18.2",
    "babel-loader": "^6.2.7",
    "babel-preset-es2015": "^6.18.0",
    "babel-preset-react": "^6.16.0",
    "babel-preset-stage-2": "^6.18.0",
    "body-parser": "^1.15.2",
    "express": "^4.14.0",
    "express-handlebars": "^3.0.0",
    "express-session": "^1.14.2",
    "file-loader": "^0.9.0",
    "node-jsx": "^0.13.3",
    "socket.io": "^1.5.1",
    "uglify-js": "^2.7.4",
    "webpack": "^1.13.3",
    "webpack-dev-server": "^1.16.2"
  },
  "dependencies": {
    "react": "^15.4.0",
    "react-dom": "^15.4.0",
    "react-redux": "^4.4.6",
    "redux": "^3.6.0",
    "redux-logger": "^2.7.4",
    "redux-thunk": "^2.1.0"
  }
}

1 个答案:

答案 0 :(得分:2)

在你的package.json添加stage-0做出反应,如下:

"babel": {
    "presets": [
      "es2015",
      "react"
      "stage-0"
    ]
  },

或者您可以添加transform-object-rest-spread插件。