ich ein Kommentarfeld wie dieses:Wie einfach Daten von Kind zu Root in reactjs übergeben?
ich alle Aktionen CommentBox Komponente gebunden haben, gibt es eine decComment Aktion Delete
Ereignis in jedem Kommentar zu handhaben.
Jedesmal, wenn ich Sie auf die Schaltfläche delete
in Comment
Ich brauche die commentId
von Comment
zu CommentList
zu CommentBox
und dann CommentBox
Updates Kommentardaten, entfernt passieren, dass Kommentar von Kommentaren Daten und Wieder macht die Kommentarliste. Hier
ist ein Code:
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();
}
},
... ...
})
Dieser Prozess zu ausführlich! Gibt es einen einfachen Weg, dies zu tun?
Warum ist das "zu ausführlich"? In jeder Komponente können Sie den Handler in das für die Komponente passende umbenennen: In Comment behandeln Sie einen "Klick", aber außerhalb dieser Komponente ist der Begriff eines Klicks irrelevant. In CommentList suchen Sie nach einem "Löschen" mit "onDel". Bleiben Sie dabei und sehen Sie, was Sie denken, wenn Sie in einem Monat zum Code zurückkehren. Ich habe diesen Ansatz eher beschreibend gefunden, als einen Haufen Zuhörer auf "document.body" zu haben. –