我正在尝试在我的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
}
答案 0 :(得分:5)
由于对象扩展语法仍然是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