Sadece öğreniyorum React ve ben ES7 sözdizimini kullanarak bileşenler yazıyorum. Benim fikrim, tüm türetilmiş bileşenlerin sahip olmasını istediğim bazı yöntemleri içerecek bir temel bileşen oluşturmaktır. Örneğin, tüm bileşenlerimde iki yönlü bağlantı için valueLink without the mixin'u uygulamak istiyorum. İşte benim fikirdir:Temel bileşenler oluşturmak ve daha sonra bunları React içinde genişletmek iyi bir uygulamadır mı?
class MyComponent extends React.Component {
bindTwoWay(name) {
return {
value: this.state[name],
requestChange: (value) => {
this.setState({[name]: value})
}
}
};
}
class TextBox extends MyComponent {
state = {
val: ''
};
render() {
return (<div>
<input valueLink={this.bindTwoWay('val')}/>
<div>You typed: {this.state.val}</div>
</div>)
}
}
Ve sadece iyi çalışır. Ancak, bu yöntem hakkında fazla bilgi bulamadık. Bu değerLinkle ilgili değil, bu sadece bir örnek. Buradaki fikir, bir temel bileşende bazı yöntemlere sahip olmak ve daha sonra bu bileşeni genişletmek, böylece türetilen bileşenlerin olağan OOP yolu gibi tüm bu yöntemlere sahip olması. Bu yüzden, bunun gayet iyi olup olmadığını veya farkında olmadığım bazı kusurlar olduğunu bilmek isterim. Teşekkürler.
Çoğu insan "hayır" derdi. Kalıtım üzerinde bileşimi tercih edin. Ancak, bu her zaman işe yaramıyor, sizinkilerden biri sizinkilerden biri olabilir. * "ya da bazı kusurlar var" * Kalıtım ve karışmalar arasındaki en büyük fark, bir sınıfın birçok karışımı kullanabilmesidir, ancak sadece bir ebeveyni olabilir. Bu, kalıtımı çok daha az esnek kılar. –
+1. @FelixKling, mümkün olan yerlerde kalıtım üzerinden kompozisyon. Const bindTwoWay = require ('../ mixins/bindTwoWay') 'gibi bir şeyi yapan bir bileşeni, yuvalanmış bir hiyerarşi içinde bir şeyi kovalamaktan açıkça açıkça görmeyi tercih ederim. –
@FelixKling Sizin noktanızı görüyorum, ama yine de, eğer sınıfın bir ebeveyni olsa bile, ve eğer sadece bir ebeveyne ihtiyacım varsa, bu yine de yapılacak çok iyi bir şey olur, değil mi? Karışımları ES6 sözdizimi ile kullanamadığımız için ... – tuks