javascript - 解构对象反应
问题描述
我刚开始使用 REACT。我正在处理一些图表,每个图表都有几个单选按钮。现在根据单击哪个图表的单选按钮,我更新该图表上的数据。这是处理函数的片段
switch (event.target.name) {
case "speedGraph":
const speedGraph = {
dataSet: graphData["speedGraph"]["dataSet"],
selectedParam: event.target.value,
};
setgraphData({
...graphData,
speedGraph,
});
break;
case "distanceGraph":
const distanceGraph = {
dataSet: graphData["distanceGraph"]["dataSet"],
selectedParam: event.target.value,
};
setgraphData({
...graphData,
distanceGraph,
});
break;
}
graphData 对象如下。graphdata 对象中还有很多其他的图
graphData = {
speedGraph:{dataset:{}, selectedParam: "someValue"},
distanceGraph:{dataset:{}, selectedParam: "someValue"}
}
我可以看到这里有一个模式,我重复了很多事情。这是因为我必须在setgraphData中解构时对所选图形的数据进行硬编码。您能否建议我如何直接使用 graphName 而不是硬编码?
解决方案
您可以使用event.target.name
从graphData
对象中获取项目。我发现先给它起一个更有意义的名字会很有帮助。
然后switch
不再需要 ,假设event.target.name
总是可以在 中找到graphData
。
方法如下:
const graphType = event.target.name;
const graphItem = {
dataSet: graphData[graphType].dataSet,
selectedParam: event.target.value,
};
setgraphData({
...graphData,
[graphType]: graphItem,
});
推荐阅读
- python - 如何给从 0 开始的唯一整数 id 到随机给定数字?
- testing - 在 testcafe 的相同测试执行期间,如何使用与 Json 中写入的相同值
- r - R函数ifelse仅返回最后一行的评估
- terminal - PyCharm 终端:目录的奇怪背景颜色
- c# - 无法在 Windows 启动 Wpf 时打开数据库
- intellij-idea - 我试图进行突变测试。在 Intellij 的想法中,我使用了 ptest。但是我收到一条错误消息,提示无法创建 HTML 文件
- excel - 不同单元格中每个循环值的输出
- apache-spark - Spark - 使用 HEADER 和 TRAIL 行读取 CSV 文件......如何忽略它们?
- javascript - 如何重新实例化由 javascript (Nashorn Engine) 实例化的类
- vba - 如何将字符串转换为 msoLanguageID