2017-10-16 116 views
-1

我正在處理反應,並且此函數將字符串輸出到className。現在沒有字符串正在返回。我可以拋出警報,並且它會觸發,但在映射語句中,沒有「綠色」或「塊」字符串返回。爲什麼從這個嵌套的if語句中不返回字符串?

boardHiglighter(id){ 
     let submittedWords = this.state.submittedWords 
     if(this.state.currentBoardValue.includes(id)){ 
      return 'red' 
     } 
     if(this.state.wordSubmitted){ 
      submittedWords.map(elem=>{    
       if(elem.word.wordLocation.includes(id)){ 
        console.log('map if') 
        return 'green' 
       } 
       else{ 
        console.log('map else') 
        return 'block' 
       } 
      })    
     } 
     else{ 
      return 'block' 
     } 

    } 

回答

1

你必須返回也映射()的結果

if(this.state.wordSubmitted){ 
     return submittedWords.map(elem=>{    
      if(elem.word.wordLocation.includes(id)){ 
       console.log('map if') 
       return 'green' 
      } 
      else{ 
       console.log('map else') 
       return 'block' 
      } 
     })    
    } 

** Array.map()返回數組。所以,如果你想只返回一個字不陣列,挑地圖中的一個()的結果,或使用Array.reduce()

1

return S中map裏只返回那將被推向新的數組值。 submittedWords.map將返回字符串值爲​​或block的新數組(不是字符串)。