2017-10-16 115 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的新数组(不是字符串)。