我有點綠色,當談到ReactJS
但它是一個項目我工作的一部分,我想了解如何正確變異組件狀態:渲染行動態地從this.state
我有一個表組件,這是在ES6宣佈爲:
class EmailStatisticTable extends React.Component {
constructor (props) {
super(props);
this.state = {
event_id: props.event_id,
statistics: [],
rows: []
}
}
componentDidMount() {
var self = this;
$.getJSON('/events/' + this.state.event_id + '/emails/stats', function(resp){
self.state.statistics = resp;
self.state.statistics.forEach(function(statistic) {
self.state.rows.push(<EmailStatisticRow statistic={statistic}/>);
});
});
console.log(self.state.rows);
}
render() {
return (
<table className="table table-striped table-hover">
<thead>
<tr>
<th> Recipient Type </th>
<th></th>
</tr>
</thead>
<tbody>{this.state.rows}</tbody>
</table>
)
}
}
這裏的想法是,該行將被動態渲染時this.state.rows
變化。我可以看到在componentDidMount
方法內的self.state.rows
正確地創建了EmailStatisticRow
組件的數組。這是下面聲明:
class EmailStatisticRow extends React.Component {
constructor(props) {
super(props);
this.state = {
statistic : props.statistic
}
}
render() {
return (
<tr>
<td>{this.state.statistic.record_type}</td>
<td>{this.state.statistic.count}</td>
</tr>
)
}
}
然而,行從未添加到DOM數據是通過$.getJSON()
從服務器發回後。
我認爲我的問題可能是對管理層的基本誤解,也是ReactJS中的可變性/不可變性。
任何人都可以提供一些關於此主題的清晰度?
感謝。
太棒了。這是我需要向前推進的確切信息。我可以看到我的錯誤現在在哪裏。非常感謝。 – Ohgodwhy
很高興我能幫到你 – paqash