Il existe une bonne pratique pour simplifier quelque chose comme ce qui suit dans React?Simplifier le code répété dans 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>
);
}
Par exemple, je peux utiliser un tableau pour l'état au lieu des champs individuels et créer une fonction générique qui prend un paramètre d'index pour distinguer les case à cocher pour mettre à jour:
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>
);
}
});
Je suis nouveau Réagissez et JavaScript donc je ne sais pas exactement les compromis qui se passent dans les coulisses ici. La seconde est-elle une amélioration par rapport à la première? Lequel est préféré et pourquoi?
Cette question montre toujours aussi irrésolu. Est-ce? – jonahe