2016-12-30 26 views
0
class Example extends React.Component { 
    constructor() { 
     super(); 
     this.isChecked = this.isChecked.bind(this); 
    } 

    isChecked(ex){ 
     return this.props.defaults && $.inArray(ex, this.props.defaults); 
    } 

    render() { 
     return (
      <div className="example"> 
      {this.props.items.map(item => (
        var checked = this.isChecked({item.type}); 

        <span key={item.type}> 
         <input type="checkbox" {checked ? 'checked' : ''} name="example" value={item.type} id={item.type} /> 
         <label htmlFor={item.type}>{item.display}</label> 
        </span> 
      ))} 
      </div> 
     ); 
     } 
} 

における変数に基づいて、チェックボックスの状態を設定し、I成分this.props.itemsとデフォルトthis.props.defaultsのリストにアイテムのリストを通過しました。各項目について、項目がデフォルトのリストにある場合は、その状態をcheckedにします。全体のデザインを同じままにしておくと、どうすればできますか? (注:マップ内で変数を宣言する問題を避けるために、アプリケーションを再設計することができますが、それは問題ではありません)。条件付き上記の例でReactJS

上記のコードは機能しません(明らかに)、私はここで何をしようとしているのかをみんなに伝えようとしています。これを実行すると、 "var"が宣言されている場所で "予期しないトークン"のようなエラーが発生します。

答えて

1

render方法は、いくつかの構文エラーがあったが、これは動作するはずです:

render() { 
    return (
     <div className="example"> 
     {this.props.items.map((item) => { 
       var checked = this.isChecked(item.type); 
            return (
        <span key={item.type}> 
         <input type="checkbox" checked={checked ? 'checked' : ''} name="example" value={item.type} id={item.type} /> 
         <label htmlFor={item.type}>{item.display}</label> 
        </span> 
       ) 
     })} 
     </div> 
    ); 
    } 

主な間違いがマップに関数を宣言して、あなたは括弧内のアイテムをラップし、括弧の代わりに括弧で機能を囲むようにしていること。太い矢印関数に1つの文しかない場合は、returnを指定する必要はありません。しかし、この場合はvar checked行を追加したので、他の行を明示的にreturn文にする必要があります。入力にcheckedを設定する方法にも問題がありました。希望が助けてくれる!

+0

アドバイスをいただきありがとうございます。私が行ったやり方をチェックした理由は、HTMLでは「チェックされた」という単語が存在するだけで、ボックスをチェックする必要があることを示しています。値は重要ではありません。それは間違っていますか?しかし、私は試行していたように、dangerouslySetInnerHtmlメソッドを使用しなければならないと思います。ちなみに、アドバイスは大歓迎です。 – KyleM

+0

ああ、私はあなたがちょうどチェックアウトしようとしていた理由を参照してください、しかし、この場合、有効なjsx構文ではありません。 Reactがあなたのための最適化を処理しますが、DOMでは "checked = true"は表示されません。 –

+0

ありがとうございました。あなたのソリューションは機能しました。例えば、key = {item.type}はkey = {item.type + checked}でなければならないので、デフォルトのチェック項目が変更された場合、reactJSはリストを再レンダリングします。明らかに、私の実装に固有なので、あなたはそれを知る方法がありませんでした。あなたの助けをありがとう! – KyleM

関連する問題