Aps*_*wak 3 javascript reactjs redux
我在构建对象时遇到了麻烦.我有一个字符串(称为"SKU"在这个例子中)和它的透进来action的action.name.
我在reducer函数中有所有可用但我需要将硬编码更改SKU为action.name,但显然这在JS中是不可能的.我试过了action.name,action['name']其他的变化和我卡住了.
有什么工作?任何帮助赞赏!谢谢.
这是一些代码,所以你可以看到发生了什么:
日期更改时触发的函数...
handleChange(date) {
this.props.addDate(date, this.props.dashboardName);
}
Run Code Online (Sandbox Code Playgroud)
mapDispatch连接在组件导出的底部...
const mapDispatchToProps = dispatch => {
return {
addDate: (date, name) => dispatch({
type: 'ACTION_DASHBOARD_ADD_DATE',
date,
name
})
};
};
Run Code Online (Sandbox Code Playgroud)
行动创造者......
export function DashboardDate() {
return {
type: ACTION_DASHBOARD_ADD_DATE
};
}
Run Code Online (Sandbox Code Playgroud)
减速机开关的情况......
case ACTION_DASHBOARD_ADD_DATE: {
var filter = {};
filter[action.name] = action.date;
return {
...state,
dashboard: {
...state.dashboard,
// Below SKU needs to be the value of action.name
SKU: {
// Below too, action.name
...state.dashboard.SKU,
filter
}
}
};
}
Run Code Online (Sandbox Code Playgroud)
我不是100%确定您希望在代码中sku出现的位置,但您可以创建一个具有计算属性名称的对象,如下所示:
const obj = {
[action.name]: action.payload
};
console.log(obj); // { "sku": "abcd" }
Run Code Online (Sandbox Code Playgroud)
计算属性名称是ES2015(ES6)功能.
小智 6
使用 [action.name](计算键的语法)
case ACTION_DASHBOARD_ADD_DATE: {
var filter = {};
filter[action.name] = action.date;
return {
...state,
dashboard: {
...state.dashboard,
[action.name]: {
...state.dashboard.SKU,
filter
}
}
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2470 次 |
| 最近记录: |