这是我的代码:
import { combineReducers } from 'redux';
import { postReducers } from './postReducers';
import { stationsReducer } from './TrackCircuitSensorDataFormReducers/StationsReducer';
import { trackCircuitReducer } from './TrackCircuitSensorDataFormReducers/TrackCircuitReducer';
export const rootReducer = combineReducers({
posts: postReducers,
stationsReducer: stationsReducer,
trackCircuitReducer, trackCircuitReducer
});
export type IApplicationState = ReturnType<typeof rootReducer>;
这条线:
trackCircuitReducer, trackCircuitReducer
给我:
(属性)trackCircuitReducer:减速机
对象文字在严格模式下不能具有多个具有相同名称的属性。(1117)
重复标识符'trackCircuitReducer'.ts(2300)
我怎么解决这个问题?
问题是因为你使用的是逗号而不是两个点trackCircuitReducer,trackCircuitReducer
用这个 :
TrackCircuitReader:TrackCircuitReader
在一个对象中,所有键后面都应跟一个:
来传递该值。
更改
export const rootReducer = combineReducers({
posts: postReducers,
stationsReducer: stationsReducer,
trackCircuitReducer, trackCircuitReducer
});
至
export const rootReducer = combineReducers({
posts: postReducers,
stationsReducer: stationsReducer,
trackCircuitReducer: trackCircuitReducer
});
通过输入错字,
而不是:
,你使用的是shorthand property names。
所以,你的对象文字相当于:
{
posts: postReducers,
stationsReducer: stationsReducer,
trackCircuitReducer: trackCircuitReducer,
trackCircuitReducer: trackCircuitReducer,
}
Gecko 34之前的严格模式要求对象文字中指定的所有属性都是唯一的。普通代码可以复制属性名称,最后一个确定属性的值。但由于只有最后一个做任何事情,复制只是一个bug的向量,如果代码被修改为更改属性值而不是通过更改最后一个实例。严重模式下,重复的属性名称是语法错误。
(注意:ECMAScript 2015不再是这种情况)
您可以将文字简化为:
export const rootReducer = combineReducers({
posts: postReducers,
stationsReducer,
trackCircuitReducer
})