我有這樣一個評論框:如何輕鬆地從孩子傳遞數據reactjs根?
我已綁定的所有行動,CommentBox組件,還有一個decComment行動來處理每個評論Delete
事件。
每次當我點擊Comment
的delete
按鈕,我需要的Comment
的commentId
傳遞給CommentList
到CommentBox
然後CommentBox
更新註釋數據,刪除從註釋數據和註釋重新呈現評論列表。
下面是一些代碼:
var Comment = React.createClass({
handleDel: function() {
var cid = this.props.cid;
this.props.onDel(cid);
return false;
},
render: function() {
return (
<div key={this.props.cid}>
<a onClick={this.handleDel}>Del</a>
</div>
);
}
});
var CommentList = React.createClass({
handleDel: function(cid) {
this.props.onDel(cid);
},
render: function() {
var commentNodes = this.props.data.map(function(c) {
return <Comment cid={c.id} onDel={this.handleDel} />
}.bind(this));
return (
<div className="comments">
{commentNodes}
</div>
)
}
});
var CommentBox = React.createClass({
... ...
delComment: function (cid){
function del(data) {
$.ajax({
url: url,
type: 'delete',
dataType: 'json',
data: data,
success: function (e) {
if (e.retcode === 0) {
that.setState({
data: e.data
});
} else {
alert(e.error);
}
}
});
}
if (window.confirm('You Sure ?')) {
del();
}
},
... ...
})
這個過程太冗長!有沒有簡單的方法來做到這一點?
爲什麼是這樣「太冗長」?在每一個組件,您可以重命名處理程序,以什麼是適合的組件:在評論你正在處理一個「點擊」,但組件外點擊的概念是無關緊要的。在CommentList中,您正在尋找「onDel」的「刪除」。堅持這一點,看看你在一個月內回到代碼時的想法。我發現這種方法比在'document.body'上有大量偵聽器更具描述性。 –