Ich bin ziemlich neu zu reactjs, also schrieb ich eine ziemlich einfache Seite, um eine 'dynamische' <select>
Optionen zu testen und wie man den ausgewählten Wert bekommt. Was ich tun wollte, war auf submit, in der Lage sein, die ausgewählten Werte durch Iterieren durch die this.refs
zu erhalten, aber ich bekomme undefinierte Werte. Ich bin mir nicht sicher, wie man es mit dem Griffwechsel kontrolliert machen kann, also entschied ich mich für den unkontrollierten Ansatz. Allerdings würde ich gerne wissen, wie man beides macht. Oder gibt es einen besseren Weg, um die ausgewählten Werte auf dem Formular zu erhalten?reactjs bekomme Auswahlwerte - immer undefined
Auch in der Wiedergabe der Auswahl, warum kann ich nicht eine ref={this.props.formId}
dort anstelle der Optionsliste hinzufügen? Wenn ich das Ref auf OptionsList entferne und es in der Auswahl habe, dann erkennt es keine Auswahleingaben.
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')
);
Wie @Vladimir sagt. Schreibe einen Getter in deine 'OptionsList': https://jsfiddle.net/ufL3071m/ –
das ist hilfreich, danke – fes