【发布时间】:2019-02-13 05:27:39
【问题描述】:
我有以下代码在我的页面中添加复选框。问题是我怎样才能得到他们的价值观?我目前正在做的是使用 onChange 获取值并将其添加到我的状态,但不确定这是否是最好的方法?在输入中收集数据的最佳做法是什么,我应该使用 onChange 还是 ref,我对 ref 有点困惑(我是 ReactJS 的新手)
{Object.keys(this.state.IndustryChoice).map(key => (
<label className="custom-control fill-checkbox">
<input
name="Industry"
type="checkbox"
value={this.state.IndustryChoice[key]}
className="fill-control-input"
onChange={this.props.onMainToggle}
/>
<span className="fill-control-indicator" />
<span className="fill-control-description">
{this.state.IndustryChoice[key]}
</span>
</label>
))}
这是我的代码的其他部分
handleMainObjectCheckBoxToggle = event => {
let field = event.target.name;
let value = event.target.value;
let MainObject = this.state.MainObject;
// console.log("Winning Ways", MainObject[field]);
if (customIncludes(MainObject[field].results, value)) {
MainObject[field].results = customRemoveStringArray(
MainObject[field].results,
value
);
} else {
MainObject[field].results = appendObjTo(
MainObject[field].results,
value
);
// console.log(MainObject[field].results);
}
return this.setState({ MainObject });
};
<FormTactics
onMainToggle={this.handleMainObjectCheckBoxToggle}
/>
【问题讨论】:
-
您看过reactjs.org/docs/forms.html 上的“处理多个输入”吗?这听起来大概是您的提议。
-
你想知道关于表单的最佳实践是什么,你应该检查goshakkk.name/controlled-vs-uncontrolled-inputs-react
-
我们可以查看您代码的其他部分吗?您如何处理更改,如何设置状态等?
-
“handleMainObjectCheckBoxToggle”处理我的状态变化,但问题是每次他们检查一个选项时它只会得到 1 个值,这就是为什么我需要迭代到我的 MainObject[field].results 如果它已经如果它不存在,则添加它。有没有更简单的方法?