reactjs - 如何动态更新对象的状态?
问题描述
我正在尝试创建一个可重用的 updateComponentHandler,它将根据通过各种输入字段返回的值更新任何选定组件的状态。
通常人们会使用这样的东西:
updateComponentHandler = value => {
this.setState(prevState => {
let selected = prevState.usedComponents
.filter(item => item.selected === true)
.shift();
selected.backgroundColor = value;
return { selected};
});
};
但是,为了使其真正可重用,我无法对 backgroundColor 进行硬编码,因为有些情况需要更新其他属性。因此,在我的输入组件中,我将返回需要更新的属性和值,如下所示:
handleChange={color =>
this.props.updateComponent({ backgroundColor: color.hex })
}
例如返回 backgroundColor: "#CCCCCC"
我的问题是我不知道如何将这个值插入到 setState 中,使用“selected.backgroundColor = value;” 从上面的例子。谁能告诉我该怎么做?
解决方案
我不确定我是否理解您要执行的操作,但是您可以做的一件事是传递状态中对象的键并执行selected[key] = value
.
updateComponentHandler = (key, value) => {
this.setState(prevState => {
let selected = prevState.usedComponents
.filter(item => item.selected === true)
.shift();
selected[key] = value;
return { selected };
});
};
handleChange={color =>
this.props.updateComponent('backgroundColor', color.hex)
}
推荐阅读
- javascript - jQuery的元素总和
- python - Python 到 Python 3.7 的 EXE 文件
- python - 为什么我在运行爬虫时会收到“ModuleNotFoundError”?
- javascript - 使用 Webpack 导入时出现意外未定义
- qt - 我需要从一开始就加载所有 QFileSystemHierarchy,以过滤所有子项
- c++ - 从作为参数传递的函数中提取参数
- javascript - 如何使用 javascript 从多维数组创建和填充多个表
- matlab - matlab中的4d积分
- javascript - Discord.js 被触发了几次
- r - 如何/我可以使用 R 中的 randomForest 包获得整个森林的 OOB 错误