我对 reactjs 很陌生,所以我写了一个相当简单的页面来测试“动态”<select>
选项以及如何获取所选值。我想要做的是在提交时,能够通过迭代获得选定的值,this.refs
但我得到了未定义的值。我不确定如何使用手柄更改使其以受控方式工作,因此我选择采用不受控制的方法。但是我想知道如何做到这两种方式。还是有一种更简洁/首选的方式来获取表单提交上的选定值?
同样在 select 的渲染中,为什么我不能ref={this.props.formId}
在 OptionsList 上而不是在其中添加一个?如果我删除 OptionsList 上的 ref 并将其放在选择中,则它不会识别任何选择输入。
var data1 = [
{ Id: 1, Name: "Option 1", Value: "Value 1" },
{ Id: 2, Name: "Option 2", Value: "Value 2" },
{ Id: 3, Name: "Option 3", Value: "Value 3" }
];
var data2 = [
{ Id: 4, Name: "Option 4", Value: "Value 4" },
{ Id: 5, Name: "Option 5", Value: "Value 5" },
{ Id: 6, Name: "Option 6", Value: "Value 6" }
];
var FormOptionList = React.createClass({
handleSubmit: function (e) {
e.preventDefault();
for (var ref in this.refs) {
console.log(this.refs[ref].value);
}
return;
},
render: function () {
return (
<div className="formList">
<form onSubmit={this.handleSubmit}>
<div>
<OptionsList key="ListA" formId="ListA" options={this.props.data1} ref="ListA" />
<br />
<OptionsList key="ListB" formId="ListB" options={this.props.data2} ref="ListB" />
</div>
<input type="submit" value="Post" />
</form>
</div>
);
}
});
var OptionsList = React.createClass({
//getInitialState: function () {
// return {
// options: [],
// selectValue: 'Option 1'
// };
//},
//handleChange: function(e) {
// this.setState({ selectValue: e.target.value })
//},
getInitialState: function () {
return {
options: []
};
},
render: function () {
var optionsList = this.props.options.map(function (option) {
return (
<option key={option.Id} value={option.Value}>{option.Name}</option>
)
});
return (
<select>
{optionsList}
</select>
);
}
});
ReactDOM.render(
<FormOptionList data1={data1} data2={data2} />,
document.getElementById('content')
);