2017-10-20 14 views
1

我是反應原生和java腳本的新手。我想檢查一下,當我的工具欄中的項目等於'A'時(當某個主體選擇A時),那麼觸摸屬性就會變成虛假的。我這樣寫:如何在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 

你可以使用一個三元操作符:

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

...但由於相等比較給你一個布爾值,這將是最簡單的,只是分配:

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

很好的答案!非常感謝。還有一個問題,如果我有兩個條件呢?例如,如果我需要同時檢查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); 
},