react報錯Each child in an array or iterator should。。?

在使用react的過程中,把版本從0.13.3升級到了1.0.0.結果原來的代碼報出了一個警告:Warning: Each child in an array or iterator should have a unique "key" prop. Check the top-level render call using

    . See https://fb.me/react-warning-keys for more information.

我的相關代碼是:

class ListItemText extends React.Component {

constructor() {

super();

}

render() {

return (

&

&

{ this.props.title }&

&

{ this.props.desc }&

&

);

}

}

class ListItem extends React.Component {

constructor() {

super();

}

render() {

return (

&

  • &

    &&

    &

    );

    }

    }

    window.init = function() {

    var text = Coupons.map(function(node, i) {

    function redirect() {

    。。。。。

    }

    return &&;

    });

    ReactDOM.render(

    &

      { text }&,

      document.getElementById("coupons-box")

      );

      }

        不知道是哪個用法在1.0.0中被廢棄了,望大神指點!謝謝!

  • 這個是和react的dom-diff演算法相關的。react對dom做遍歷的時候,會根據data-reactid生成虛擬dom樹。如果你沒有手動的添加unique constant key的話,react是無法記錄你的dom操作的。它只會在重新渲染的時候,繼續使用相應dom數組的序數號(就是array[index]這種)來比對dom樹。


    錯誤說得很清楚,就是缺一個叫做key的東西,如下就應該可以了

    &&

    key的文檔:Keyed Fragments


    &&

    在遍歷或者循環輸出去渲染子組件的時候,key必不可少


    關鍵在紅箭頭處,map返回一個數組,react的解析要求數組中的子元素必須要有key

    這樣寫&&就OK了


    哪些地方需要加key?是子組件還是所有的組件,包括原生組件?


    加個參數 表示下標啊


    推薦閱讀:

    為什麼前端工程師很少用 Visual Studio (Windows)?

    TAG:前端開發 | 前端工程師 | React |