2017-10-20 4 views
1

私は反応ネイティブとJavaスクリプトで新しいです。私がチェックしたいのは、ツールバーの項目が 'A'に等しいとき(ある本体がAを選択したとき)、touchableプロパティはfalseになります。私はこのように書いた:Javaスクリプトのツールバーの条件を使用する方法

init: function(pThis) { 
    toolbarActiveItem: 'test', 
     this.state = { 
     toolbar: [ 
       { 
        id: 5, 
        name: 'test', 
        description: I18n.t('test'), 
        if(this.item=='A'){ 
        isTouchable: false, 
        } 
        else { 
         isTouchable: true, 
         } 
        onOpen: (item) => { this.onToolbarOpen(pThis,item) }, 
        }, 
       ], 
     }; 

     this.onToolbarOpen(pThis); 
    }, 

しかし私は文法に誤りがある。私は、コードはif条件なしで動作していることを言及する必要があります。この問題を解決する方法を教えてください。

答えて

4

ifステートメントをオブジェクトリテラルの途中に配置することはできません。

var obj = {}; 
if (foo) { 
    obj.bar = 1; 
} else { 
    obj.bar = 2; 
} 
// then pass `obj` somewhere 

あなたは三項演算子を使用できます:

次の2つの段階でそれを構築することができ

isTouchable: (this.item=='A' ? true : false), 

を...しかし、同等比較はあなたにブール値を与えているので、それだけをする最も簡単でしょうそれを割り当てます:

isTouchable: (this.item == 'A') 
+0

非常にいい回答です!どうもありがとうございます。もう1つの質問、2つの条件があるとどうなりますか?たとえば、アイテムのAとBを同時にチェックする必要がある場合はどうなりますか? – Queen

2

toolbar要素がオブジェクトです。 ifステートメントを使用することはできません。以前に宣言した変数を使用して後で記入する必要があります。

init: function(pThis) { 
var touchable; 
if(this.item=='A'){ 
    touchable = false, 
} 
else { 
    touchable = true, 
} 
toolbarActiveItem: 'test', 
    this.state = { 
    toolbar: [ 
      { 
       id: 5, 
       name: 'test', 
       description: I18n.t('test'), 
       isTouchable: touchable, 
       onOpen: (item) => { this.onToolbarOpen(pThis,item) }, 
       }, 
      ], 
    }; 

    this.onToolbarOpen(pThis); 
}, 
関連する問題