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')
);

使用组合比使用继承更简单,并且易于保持复杂性。

更新时间: 28-8-2019

2k+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始
广告