Bu, cevap verilebilir ve düşünülmüş arasındaki çizgiyi aşıyor olabilir, ancak karmaşıklık büyüdükçe ve bir yöne ihtiyaç duydukça bir ReactJS bileşeninin nasıl yapılandırılacağı konusunda ileri geri gidiyorum.
AngularJS'den geliyorum, modelimi bileşene bir özellik olarak geçirmek ve bileşenin modeli doğrudan değiştirmesini istiyorum. Veya modeli çeşitli stateözelliklere ayırmalı ve yukarı akışa geri gönderirken tekrar birlikte mi derlemeliyim? ReactJS yolu nedir?
Bir blog yazısı düzenleyici örneğini ele alalım. Modeli doğrudan değiştirmeye çalışmak şuna benzer:
var PostEditor = React.createClass({
updateText: function(e) {
var text = e.target.value;
this.props.post.text = text;
this.forceUpdate();
},
render: function() {
return (
<input value={this.props.post.text} onChange={this.updateText}/>
<button onClick={this.props.post.save}/>Save</button>
);
}
});
Yanlış görünüyor.
textModel özelliğimizi yapmanın stateve aşağıdaki gibi kaydetmeden önce modele geri derlemenin daha çok React yolu mu?
var PostEditor = React.createClass({
getInitialState: function() {
return {
text: ""
};
},
componentWillMount: function() {
this.setState({
text: this.props.post.text
});
},
updateText: function(e) {
this.setState({
text: e.target.value
});
},
savePost: function() {
this.props.post.text = this.state.text;
this.props.post.save();
},
render: function() {
return (
<input value={this.state.text} onChange={this.updateText}/>
<button onClick={this.savePost}/>Save</button>
);
}
});
Bu bir çağrı gerektirmez this.forceUpdate(), ancak model büyüdükçe (bir gönderinin bir yazarı, konusu, etiketleri, yorumları, derecelendirmeleri vb. Olabilir) bileşen gerçekten karmaşıklaşmaya başlar.

textalan yerinesetTextdoğrulama ve diğer bazı şeyler yapan bir yöntemimiz olduğunu varsayalım .setTextSafsa ve modelin yepyeni bir örneğini döndürdüğünde çalışan yöntemin (2) çalıştığını görebiliyorum . Ancak,setTextsadece iç durumu güncellerse, yine de aramamız gerekirforceUpdate, değil mi?