2016-11-04 4 views
0

基本的に私は2種類の配列を持っています。 1つはすべてのチェックボックス値用で、もう1つはカスタム値用です。だから、私の要件は、私はチェックボックスのオプションにデフォルトでカスタム配列の値から値を選択して取得したいです。どのようにreactjsを実装するには?React jsで複数のチェックオプションを実行するにはどうすればよいですか?

これは、アレイ状態であれば

var optionArray = ['item1', 'item2', 'item3', 'item4', 'item5', 'item6', 'item7'], selectedValue = ['item1', 'item5']; 

var Items = optionArray.map(function(el, i){ 
var isChecked = el == selectedValue; 
       return <div key={i} className="radio-tick-row"> 
        <input type="checkbox" className="radio-tick-input" id={"option"+i} value={el} name="selectOrganisationType" onChange={self.onChange.bind(self)} checked={isChecked} /> 
        <label className="checkbox-tick-label term" htmlFor={"option"+i}><span>{el}</span></label> 
       </div>; 
     }); 
+0

既存のマップ関数の内部にマップすることを意味しますか? – Sathya

+0

@OriDrori。デモコードを更新していただけますか? – Sathya

+0

いいえ、すべてのoptionArray値を表示します。私は取り除きたくありません。選択した値のオプションのみが選択されます。 – Sathya

答えて

1

のTry A、私のサンプルコードです:

より見やすくするために
var optionArray = ['item1', 'item2', 'item3', 'item4', 'item5', 'item6', 'item7'], selectedValue = ['item1', 'item5']; 

var Items = optionArray.map(function(el, i){ 
var isChecked = false; 
       if(selectedValue.indexOf(el)) { 
        isChecked = true; 
       } 
       return <div key={i} className="radio-tick-row"> 
        <input type="checkbox" className="radio-tick-input" id={"option"+i} value={el} name="selectOrganisationType" onChange={self.onChange.bind(self)} defaultChecked={isChecked} /> 
        <label className="checkbox-tick-label term" htmlFor={"option"+i}><span>{el}</span></label> 
       </div>; 
     }); 
+0

動作していません。すべてのオプションが初めて選択されます。 – Sathya

+0

もう1つ疑いがあります。私のselectedValueがnullの場合私は変化のイベントを発射しながら、その価値を他の場所にも引き出します。初期状態でnullであるかどうかを制御する方法は? – Sathya

+0

selectedValueがnullであるかどうかをテストする場合は別のコードを追加 – madalinivascu

0

だけでなく、ES 20の

const Items = optionArray.map((el, i) => { 
    const isChecked = selectedValue.indexOf(el) > -1; 
    return (
    <div key={i} className="radio-tick-row"> 
     <input type="checkbox" className="radio-tick-input" id={"option"+i} 
     value={el} name="selectOrganisationType" 
     onChange={self.onChange.bind(self)} checked={isChecked} /> 
     <label className="checkbox-tick-label term" htmlFor={"option"+i}> 
     <span>{el}</span> 
     </label> 
    </div> 
); 
} 
0

あなたはSetを使用することができます:

var optionArray = ['item1', 'item2', 'item3', 'item4', 'item5', 'item6', 'item7'], selectedValue = ['item1', 'item5']; 

var selectedValueSet = new Set(selectedValue); 

var Items = optionArray.map(function(el, i){ 
    var isChecked = selectedValueSet.has(el); 
    return (
     <div key={i} className="radio-tick-row"> 
      <input type="checkbox" className="radio-tick-input" id={"option"+i} value={el} name="selectOrganisationType" onChange={self.onChange.bind(self)} checked={isChecked} /> 
      <label className="checkbox-tick-label term" htmlFor={"option"+i}><span>{el}</span></label> 
     </div> 
    ); 
}); 
関連する問題