Es gibt eine Best Practice, um etwas wie das Folgende in React zu vereinfachen?Vereinfachen wiederholten Code in React
getInitialState: function() {
return {
checkbox1: false,
checkbox2: false,
checkbox3: false,
...
};
},
selectCheckbox1: function() {
this.setState({
checkbox1: !this.state.checkbox1
});
},
selectCheckbox2: function() {
this.setState({
checkbox2: !this.state.checkbox2
});
},
selectCheckbox3: function() {
this.setState({
checkbox3: !this.state.checkbox3
});
},
...
render: function() {
return (
<div>
<input type="checkbox" checked={this.state.checkbox1} onChange={this.selectCheckbox1} />
<input type="checkbox" checked={this.state.checkbox2} onChange={this.selectCheckbox2} />
<input type="checkbox" checked={this.state.checkbox3} onChange={this.selectCheckbox3} />
...
</div>
);
}
Zum Beispiel kann ich ein Array für den Staat statt einzelner Felder verwenden und eine generische Funktion erstellen, die einen Index Parameter nimmt die Checkbox zu unterscheiden zu aktualisieren:
const Checkboxes = React.createClass({
getInitialState: function() {
return {
checkboxes: [false, false, false, ...]
};
},
selectCheckbox: function (index) {
let checkboxes = this.state.checkboxes.slice();
checkboxes[index] = !checkboxes[index];
this.setState({
checkboxes: checkboxes
});
},
render: function() {
return (
<div>
<input type="checkbox" checked={this.state.checkboxes[0]} onChange={() => this.selectCheckbox(0)} />
<input type="checkbox" checked={this.state.checkboxes[1]} onChange={() => this.selectCheckbox(1)} />
<input type="checkbox" checked={this.state.checkboxes[2]} onChange={() => this.selectCheckbox(2)} />
...
</div>
);
}
});
Ich bin neu in Reagieren Sie und JavaScript, also weiß ich nicht genau die Kompromisse, die hier hinter den Kulissen geschehen. Ist die zweite eine Verbesserung gegenüber der ersten? Welches ist bevorzugt und warum?
Diese Frage ungelöst zeigt noch. Ist es? – jonahe