2016-12-01 95 views
0

這是我的代碼:發生反應,呈現部件

var Item = React.createClass({ 
    render: function() { 
     return (
       React.createElement('div', {}, 
         React.createElement('span', {}, this.props.a), 
         React.createElement('span', {}, this.props.b) 
         ) 
       ); 
    } 
}); 

var RParent = React.createClass({ 
    getInitialState: function() { 
     return {messages: []}; 
    }, 
    addMess: function (data) { 
     var self = this; 
     self.state.messages.push({ 
      a: data.a, 
      b: data.b 
     }); 
     this.setState({messages: self.state.messages}); 
    }, 
    render: function() { 
     var messages = this.state.messages; 
     return (
       React.createElement('div', {}, 
         React.createElement(Item, messages)) 
       ); 
    } 
}); 

var box = ReactDOM.render(React.createElement(RParent), document.getElementById('parentDiv')); 

function render(a, b) { 
    box.addMess({ 
     a: a, 
     b: b 
    }); 
} 

數據被髮送到render功能。看來,不知何故屬性沒有達到Item的渲染功能,因爲他們似乎是undefined當我嘗試打印到控制檯。

任何想法,爲什麼會發生這種情況?

問題是什麼都沒有呈現到「parentDiv」中。它只是空白。但是,在檢查元素時,我仍然可以看到它下面有兩個「span」子元素(它們不是在html或其他地方創建的)。但是這些跨度元素沒有內容。

回答

1

我認爲你的代碼存在根本問題。你正試圖通過外部函數'render'將'a'和'b'傳遞給你的反應組件,該外部函數似乎正在調用組件的某個功能。這是錯誤的。

您應該將道具上的'a'和'b'作爲道具傳遞給您的React組件RParent。只要'a'和'b'的值發生變化,您的父組件就會自動重新渲染。

var Item = React.createClass({ 
render: function() { 
    return (
      React.createElement('div', {}, 
        React.createElement('span', {}, this.props.a), 
        React.createElement('span', {}, this.props.b) 
        ) 
      ); 
} 
}); 

var RParent = React.createClass({ 
getInitialState: function() { 
    return {messages: []}; 
}, 
, 
render: function() { 
    var messages = this.props.messages; 
    return (
      React.createElement('div', {}, 
        React.createElement(Item, messages)) 
      ); 
} 
}); 

ReactDOM.render(
    (<RParent messages= {'a': a, 'b': b} />) 
    , document.getElementById('parentDiv')); 
+0

''什麼是一個和你正在分配給鍵B' –

+0

@自由靈魂我刪除了其他答案。 a和b是與問題中相同的值。請參閱渲染功能。 –

+0

@AmoolyaSKumar謝謝,只是一個簡單的問題,我還沒有嘗試過代碼(暫時無法使用),但我可以問我應該在哪裏將元素推送到'messages'數組中?在渲染事件?或'componentWillMount'事件?我的實現要求陣列的控制,所以我需要有一個陣列 – user3271166