私はReactを学んでいます。私はES7構文を使ってコンポーネントを書いています。 私の考えは、派生したすべてのコンポーネントに持たせたいいくつかのメソッドを含む基本コンポーネントを作成することです。たとえば、すべてのコンポーネントで双方向バインディングを実装する場合は、valueLink without the mixinを実装します。ここに私の考えです:基本コンポーネントを作成し、それをReactで拡張するのは良い方法ですか?
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>)
}
}
そして、それだけで正常に動作します。しかし、私はこの方法に関する多くの情報を見つけることができませんでした。これは単なる例であって、valueLinkに関するものではありません。アイデアは、基本コンポーネントにいくつかのメソッドを持ち、後でそのコンポーネントを拡張して、派生コンポーネントが通常のOOP方法のようなすべてのメソッドを持つようにすることです。だから私はちょうどこれが完全に罰金か私が気づいていないいくつかの欠陥があるかどうかを知りたいと思う。ありがとう。
ほとんどの人が「いいえ」と答えます。継承以上の構成を優先する。しかし、それは必ずしも機能するとは限りません。 * "またはいくつかの欠陥があります" *継承とミックスインの最大の違いは、クラスは多くのミックスインを使用できますが、親は1つしか持てないことです。これにより、継承の柔軟性が大幅に低下します。 –
+1に@FelixKling、可能であれば継承を超える構成。私は、 'const bindTwoWay = require( '../mixins/bindTwoWay')'のようなものを明示的にネストされた階層で何かを追うよりも明示的に見たいと思っています。 –
@FelixKlingクラスは1つの親を持つことができますが、私は本当に1つの親が必要な場合でも、これはまだ完全に素晴らしいことですか? ES6構文でmixinsを使用することはできないので... – tuks