在Redux中传播属性

时间:2016-04-30 15:24:38

标签: javascript reactjs ecmascript-6 redux

我正在尝试在我的Reducer中使用spread属性,但它返回时语法错误无效。我的构建支持使用扩展运算符,因为我只在我的Redurs中得到错误。

auth_types.js

export const AUTH_USER = 'AUTH_USER'
export const UNAUTH_USER = 'UNAUTH_USER'

auth_actions.js

import { AUTH_USER, UNAUTH_USER } from './auth_types'



   export function signinUser({ email, password }) {
      return function(dispatch) {
        axios.post(`${ROOT_URL}/signin`, { email, password })
          .then(response => {
            dispatch({ type: AUTH_USER })

            browserHistory.push('/feature')
          })
      }
    }

reducer.js

import { AUTH_USER, UNAUTH_USER } from '../actions/auth_types'

export default function(state = {}, action) {
  switch(action.type) {
    case AUTH_USER:
      return { ...state, authenticated: true }
    case UNAUTH_USER:
      return { ...state, authenticated: false }
  }

  return state
}

2 个答案:

答案 0 :(得分:5)

来自the documentation

  

由于对象扩展语法仍然是ECMAScript的第2阶段提议,因此您需要使用像Babel这样的转换器在生产中使用它。您可以使用现有的es2015预设,安装babel-plugin-transform-object-rest-spread并将其单独添加到.babelrc中的插件阵列。

{
  "presets": ["es2015"],
  "plugins": ["transform-object-rest-spread"]
}
  

请注意,这仍然是一个实验性语言功能提案,因此将来可能会发生变化。

答案 1 :(得分:0)

如果您使用的是网络包,则可以通过启用 stage-2 预设来解决此问题。

首先安装npm包:

<project>
    ...
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                        <minimizeJar>true</minimizeJar>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    ...
</project>

然后将stage-2添加到npm install --save babel-preset-stage-2 中的预设数组:

webpack.config.js