學習反應。試圖製作我自己的迷你應用程序,它基於這裏完成的工作:https://www.youtube.com/watch?v=-AbaV3nrw6E。反應 - 陣列拼接故障
我遇到了在我的應用中刪除評論的問題。我曾在其他幾個地方看過類似錯誤的人,但看起來問題出在我自己的代碼中(但我沒有發現任何錯誤)。我一遍又一遍地瀏覽了Babel文件,但無濟於事。
以下是具體內容: 當您創建新評論時,您有兩個按鈕形式的選項:保存和刪除。在寫完一條評論並按下「保存」後,刪除功能就可以正常工作。但是,如果總共有三條評論(例如),並且您在第一條評論上點擊「刪除」,則會刪除下一條評論(本例中的第二條評論)。
希望這可以使一些感覺。
你能找到我的錯誤嗎?刪除功能後的數學/邏輯位於第71行,名稱爲「deleteComment」。
完全筆here.
var CommentSection = React.createClass({
getInitialState: function() {
return {editing: true}
},
edit: function() {
this.setState({editing: true});
},
save: function() {
this.props.updateCommentText(this.refs.newText.value, this.props.index);
this.setState({editing: false});
},
delete: function() {
this.props.deleteFromCard(this.props.index);
},
renderNormal: function() {
return (
<div className="comment-section">
<div className="comment-content">{this.props.children}</div>
<a className="-edit" onClick={this.edit}>Edit</a>
</div>
);
},
renderEdit: function() {
return (
<div className="comment-section">
<textarea ref="newText" defaultValue={this.props.children}></textarea>
<button className="-save" onClick={this.save}>Save</button>
<button className="-delete" onClick={this.delete}>Delete</button>
</div>
);
},
render: function() {
if(this.state.editing) {
return this.renderEdit();
} else {
return this.renderNormal();
}
}
});
var PhotoSection = React.createClass({
render: function() {
return <div className="photo-section"></div>;
}
});
var Desk = React.createClass({
getInitialState: function() {
return {
comments: []
}
},
addComment: function(text) {
var arr = this.state.comments;
arr.push(text);
this.setState({comments: arr})
},
deleteComment: function(i) {
console.log(i);
var arr = this.state.comments;
arr.splice(i, 1);
this.setState({comments: arr})
},
updateComment: function(newText, i) {
var arr = this.state.comments;
arr[i] = newText;
this.setState({comments: arr})
},
commentFormat: function(text, i) {
return (
<CommentSection key={i} index={i} updateCommentText={this.updateComment} deleteFromCard={this.deleteComment}>
{text}
</CommentSection>
);
},
render: function() {
return (
<div className="desk">
<div className="card">
<PhotoSection />
<div className="comment-section-backing">
<button className="-comment" onClick={this.addComment.bind(null, "")}>Leave a Comment</button>
{this.state.comments.map(this.commentFormat)}
</div>
</div>
</div>
);
}
});
ReactDOM.render(<Desk />, document.getElementById('app'));
幾乎可以工作,但會自動編輯每條評論。我也找到了適合自己的解決辦法。謝謝! –