【发布时间】:2019-04-14 00:39:57
【问题描述】:
由于我对 React 还很陌生,也不是 JS 尤其是 ES6 方面的专家,我想知道如何使我的代码(有效)更漂亮并重构它。
我想在一个表单中处理多个复选框并将当前值存储在状态对象中。由于复选框是分组的,我想要一个像这样被回答的任务的结构:
{
"isLoaded":true,
"answeredTasks":{
"1":[
"green",
"blue",
"red"
],
"5":[
"car",
"cat",
"house"
]
}
}
这是我在复选框上的 onChange 方法:
checkBoxOnChange = e => {
let currentAnswers = this.state.answeredTasks;
let element = e.currentTarget;
// if it is the first answer checked
if (currentAnswers[element.name] === undefined) {
currentAnswers[element.name] = [];
}
// if uncheck
if (!element.checked) {
const index = currentAnswers[element.name].indexOf(element.value);
currentAnswers[element.name].splice(index, 1);
} else {
currentAnswers[element.name].push(element.value);
}
this.setState({ answeredTasks: currentAnswers });
};
你能告诉我如何改进我的方法,尤其是使用 ES6 吗? 我大部分时间都在努力创建数据结构。
谢谢。
【问题讨论】:
-
您能否将代码提供给您的整个组件代码?此外,作为建议,请避免在代码中使用“let”,而应使用“const”来避免改变数据。尝试学习函数式编程范式,这是最佳行业实践。
标签: javascript arrays reactjs object ecmascript-6