私の配列からレンダリングされた動的チェックボックスを制御しようとしました。私の問題は、私は複数のチェックボックスを持っていますが、私は1つだけの状態を私のコンストラクタに持っています。以下はReactjsの動的チェックボックスを制御するには?
せずに、動的フィールド/項目を制御する方法上の任意の他の方法はあります私のコードです:
onAddingItem = (item) =>{
var self = this;
const value = item.target.type === 'checkbox' ? item.target.checked : item.target.value;
var newArray = self.state.product.slice();
if(item.target.checked){
newArray.push(item.target.value);
self.setState({addProducts:value, product:newArray})
} else {
newArray.splice(item.target.value, 1); //remove element
self.setState({addProducts:value, product:newArray}); //update state
}
}
render(){
var self = this;
const {title, photo, photoHeight, photoWidth, showPhoto, editorState, description, editorData, productsList} = this.state;
const product_list = productsList.map((index, i) =>
<tr key={i+1}>
<td>{i+1}</td>
<td>{index.name}</td>
<td>
<div class="checkbox checkbox-circle checkbox-color-scheme">
<label class="checkbox-checked">
<input type="checkbox" value={index.name} checked={self.state.addProducts} onChange={this.onAddingItem}/> <span class="label-text">Add ?</span>
</label>
</div>
</td>
</tr>
);
私は、チェックボックスのいずれかを確認するたびに。他のすべてのチェックボックスもチェックされます。あなたが見るように、チェックボックスの値を配列に追加してチェックし、配列から既存の値を削除する場合は、チェックボックスをオフにします。
私はあなたがここに状態を変異されていると信じて: 'state.productsList [i]が.isChecked = state.productsList [i]が.isChecked;'! – Henry