2017-11-09 13 views
1

私のコンポーネントのレンダリング関数で、マークアップでanouther関数を呼び出しています。ここまでは順調ですね。JSX内の関数内でリアクション関数を反応させますか?

renderEquipmentOptions() { 
    return (
    <div className="form-check"> 
     <label className="form-check-label"> 
     <input className="form-check-input" type="checkbox" value=""/> 
     Nothing 
     </label> 
    </div> 
) 
} 

ここで、追加のマークアップを生成するためにこの関数にマップを追加します。

renderEquipmentOptions() { 
    const render = this.props.equipment.map((item, i) => { 
    return (
     <div key={i} className="form-check form-check-inline"> 
     <label className="form-check-label"> 
      <input className="form-check-input" type="checkbox" value=""/> 
      {item} 
     </label> 
     </div> 
    ) 
    }); 

    return (
    <div className="form-check"> 
     <label className="form-check-label"> 
     <input className="form-check-input" type="checkbox" value=""/> 
     Nothing 
     </label> 
    </div> 
    {this.render()} 
) 
} 

これは機能しません。 {}で関数をラップして呼び出すことはできないようです。これは関数内の関数なのか?

答えて

0

複数の要素を配列から返さずに関数から戻そうとしているため、機能しません。またrenderはあなたのケース内の関数が、

renderEquipmentOptions() { 
    const render = this.props.equipment.map((item, i) => { 
    return (
     <div key={i} className="form-check form-check-inline"> 
     <label className="form-check-label"> 
      <input className="form-check-input" type="checkbox" value=""/> 
      {item} 
     </label> 
     </div> 
    ) 
    }); 

    return (
    [<div className="form-check"> 
     <label className="form-check-label"> 
     <input className="form-check-input" type="checkbox" value=""/> 
     Nothing 
     </label> 
    </div>, 
    ...render 
    ] 
) 
} 
+0

ザッツ奇妙なように配列を返すvariable

変更あなたのコードではないですが、私はそれを正しく説明しませ用バージョン16申し訳 – Evans

+0

にしています。 React 16では、配列を返すことによって、コンポーネントのレンダリング関数から複数の要素を返すことができますが、より小さなバージョンを使用していても、配列の要素を返すことができます。この方法をJSX統語砂糖といいます。 –

関連する問題