2016-11-01 133 views
1

我有一個反應組件,我想呈現一個字符串單詞列表裏面,我有一個數組中的單詞,我可以申請map上面的問題是,我想。設置一個指數作爲列表中的每個對象鍵 以下是部分:反應:意外的令牌,預計(

export default class RandomWords extends Component{ 

    var ID=-1; 
    createWord(word){ 
    ID++; 
    return ({ 
     id:ID, 
     text:word 
    }); 

    } 

    renderList(){ 

     return this.props.words.map((word)=>{ 
      const wrappedText=this.createWord(word); 
      return (<li key={wrappedText.id} className="item"> 
        <Word value={wrappedText.text}></Word> 
      </li>); 
     }) 
    } 
     render(){ 
     // console.log("words are:"+this.props.words); 
      return(
        <ul className="list"> 
         {this.renderList()} 
       </ul>) 
     }; 
} 

來生成ID,我已經看到了this,和我做的createWord(word)功能,但在該行var ID=-1;它抱怨附:

Unexpected token, expected ( 

1-我的代碼有什麼問題?

2 - 如何設置從0開始到列表的整數?

+2

你不能把一個'var'自由浮動在那樣的類..想到的'類「就像一個常規的JavaScript對象,它是一個列表鍵值,其中的值是函數。把'var'放在你的類定義之上 – azium

回答

0

正如在評論中指出,你不能有var這樣的自由浮動。無論如何,更好的解決方案是使用內置索引map。由於這是一臺發電機的功能,第二個參數是索引,因此,您可以將您的邏輯更改爲:

return this.props.words.map((word, i)=>{ 
    return (<li key={i} className="item"> 
     <Word value={word}></Word> 
    </li>); 
}) 
1

您只能將方法放在ES6類中。取而代之的是,重寫你的類是這樣的:

export default class RandomWords extends Component { 

    constructor(props) { 
    super(props); 
    this.ID = -1; 
    } 

    createWord(word){ 
    this.ID++; 
    return ({ 
     id: this.ID, 
     text: word 
    }); 

    } 
    // ... 
} 

,或者,如果你想ID要在全球範圍內增加的所有實例:

let ID = -1; 
export default class RandomWords extends Component { 

    createWord(word){ 
    ID++; 
    return ({ 
     id: ID, 
     text: word 
    }); 

    } 
    // ... 
}