2017-09-21 8 views
0

レンダリング関数内の関数内の条件を呼び出すときには、条件がtrueの場合のみ呼び出し関数の内部条件 - Reactjs

次のコードの3行目です。

{this.props.xarray.map((heading, index) => 
     {return heading.headingis.toLowerCase().indexOf('mobile') != -1 ? 
      {this.setcheckstate()} //THIS IS FUNCTION 
      <option value="{heading.headingis}" key={index} selected>{heading.headingis}</option> 
      : 
      <option value="{heading.headingis}" key={index}>{heading.headingis}</option> 
     } 
    )} 

しかし、これはエラーを返して:

Syntax error: this is a reserved word (51:10)

私は条件が真の場合の状態を変更したいです。

+0

機能は何ですか?それは何を返すのですか? – paqash

答えて

3

なぜあなたはternarnyを落とさないのですか?平文ifの文IMOを書くことはときどきより明確で清潔です。

{ 
    this.props.xarray.map((heading, index) => { 
    if (heading.headingis.toLowerCase().indexOf('mobile') != -1) { 
     this.setcheckstate(); 
     return <option value="{heading.headingis}" key={index} selected>{heading.headingis}</option> 
    } 

    return <option value="{heading.headingis}" key={index}>{heading.headingis}</option> 
    }) 
} 
+0

予期せぬトークン 'if'を言う。 –

+0

それは素晴らしい:)私の間違って働いた。 –

2

有効な構文ではないため、条件をリターンの外に置く必要があります。

+0

'{this.setcheckstate()} 'を追加しないとうまくいきます –

+0

はい、正確にはあなたが外に置いておきたいものです:{this.setcheckstate()} ... –

1

それは私がすべて消滅しました申し訳ありませんが、この、renderメソッド(レンダリングの復帰方法インサイド

const { xarray } = this.props; 

の 外側戻し)

{xarray.map((heading, i) => { 
    const { headingis } = heading; 
    const condition = headingis.toLowerCase().indexOf('mobile') != -1; 
    return (
    condition && this.setCheckState() ? 
     <option value={headingis} key={i} selected>{headingis}</option> : 
     <option value={headingis} key={i}>{headingis}</option> : 
); 
}} 

ようになり、それはちょうど習慣であり、私はきれいなコードが好きです。とにかく、条件に基づいて選択したものだけを表示したい場合は、このようなこともできます。

{xarray.map((heading, i) => { 
    const { headingis } = heading; 
    const condition = headingis.toLowerCase().indexOf('mobile') != -1; 
    return (
    condition && <option 
        value={headingis} 
        key={i} 
        selected={() => this.setCheckState} 
       > 
        {headingis} 
       </option> 
); 
})} 
+0

「コード#1」の上に実装すると、最後に「Unexpected token}}」というエラーが表示されます。 –

+0

構文を修正しました。最後の行には '' '' ''がありませんでした。 :) –

関連する問題