我想创建这样的状态:
componentWillReceiveProps(nextProps) {
nextProps.columns.forEach((c) => {
const name = nextProps.columns[nextProps.columns.indexOf(c)];
this.setState({ `${name}`: (this.props.activeHeaders.indexOf(c) > -1) });
console.log(`${name}`);
});
}
我正在映射我的数组列,所以数组上的每个项目,我想将它们设置为关键字,是否有可能的方式?
答案 0 :(得分:2)
componentWillReceiveProps(nextProps) {
nextProps.columns.forEach((c) => {
const name = nextProps.columns[nextProps.columns.indexOf(c)];
this.setState({ [name]: (this.props.activeHeaders.indexOf(c) > -1) });
console.log(`${name}`);
});
}
这应该做的工作
答案 1 :(得分:2)
有可能吗?
是的,但是您尝试的方式不正确,而不是在内部循环中调用setState,首先准备一个包含所有键值的对象,然后将该对象传递给setState。
像这样:
componentWillReceiveProps(nextProps) {
let obj = {};
nextProps.columns.forEach((c, i) => {
const name = nextProps.columns[nextProps.columns.indexOf(c)];
obj[name] = this.props.activeHeaders.indexOf(c) > -1;
});
this.setState(obj);
}
没有得到这一行的含义:
const name = nextProps.columns[nextProps.columns.indexOf(c)];