React.js 中的组合与继承
组合和继承是在 React.js 中将多个组件一起使用的两种方法。这有助于代码重用。React 建议尽可能使用组合而不是继承,并且仅在非常特殊的情况下才使用继承。
理解它的示例 −
假设我们有一个输入用户名组件。
继承
class UserNameForm extends React.Component { render() { return ( <div> <input type="text" /> </div> ); } } ReactDOM.render( < UserNameForm />, document.getElementById('root'));
只输入名称很容易。我们将创建和更新用户名字段的另外两个组件。
使用继承,我们将像这样执行 −
class UserNameForm extends React.Component { render() { return ( <div> <input type="text" /> </div> ); } } class CreateUserName extends UserNameForm { render() { const parent = super.render(); return ( <div> {parent} <button>Create</button> </div> ) } } class UpdateUserName extends UserNameForm { render() { const parent = super.render(); return ( <div> {parent} <button>Update</button> </div> ) } } ReactDOM.render( (<div> < CreateUserName /> < UpdateUserName /> </div>), document.getElementById('root') );
我们扩展了 UserNameForm 组件,并使用 super.render(); 从子组件中提取了其方法
组合
class UserNameForm extends React.Component { render() { return ( <div> <input type="text" /> </div> ); } } class CreateUserName extends React.Component { render() { return ( <div> < UserNameForm /> <button>Create</button> </div> ) } } class UpdateUserName extends React.Component { render() { return ( <div> < UserNameForm /> <button>Update</button> </div> ) } } ReactDOM.render( (<div> <CreateUserName /> <UpdateUserName /> </div>), document.getElementById('root') );
使用组合比使用继承更简单,并且易于保持复杂性。
广告