在React

时间:2015-06-04 14:08:51

标签: inheritance reactjs ecmascript-6

我认为某些props(例如,主题)在组件中是如此普遍,以至于提取它们的处理(到超类)是有意义的。然后它的默认值也属于那里。

然而,在React中实现这一目标的唯一方法是什么?

class Base extends React.Component {
  bgColor() {
    switch (this.props.theme) {
      case 'Summer': return 'yellow'; break;
      case 'Autumn': return 'grey'; break;
      case 'Winter': return 'white'; break;
    }
  }
}
Base.defaultProps = {
  theme: 'autumn'
};
class Sky extends Base {
  render() {
    return <div style={{backgroundColor: this.bgColor()}}>{this.props.clouds}</div>;
  }
}
Sky.defaultProps = {
  clouds: []
};

... defaultProps属性(与实例相对),并且没有继承。

1 个答案:

答案 0 :(得分:7)

通过分配Sky.defaultProps,您可以隐藏基础的Sky.defaultProps = Object.assign({}, Base.defaultProps, { clouds: [] }); 。如果你想要将它们组合起来,你需要明确地这样做,例如

<asp:LinkButton ID="UpdateButton" runat="server" CommandName="Update" CommandArgument='<%# Container.DataItemIndex + ";" + Eval("idinterlocuteur") %>'>