Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React中的组件继承_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript React中的组件继承

Javascript React中的组件继承,javascript,reactjs,react-native,Javascript,Reactjs,React Native,假设我想创建一个视图组件,我想我会这样做: class MyView extends View { render() { return ( <View ...> <Stuff /> </View> ); } } 类MyView扩展了视图{ render(){ 返回( ); } } 现在,我可能不知道这里有一些非常基本的事情,但如果MyView将包含在容器层次结构更高的其他渲染中,那么在ren

假设我想创建一个视图组件,我想我会这样做:

class MyView extends View {
  render() { 
    return (
      <View ...>
        <Stuff />
      </View>
    );
  }
}
类MyView扩展了视图{
render(){
返回(
);
}
}
现在,我可能不知道这里有一些非常基本的事情,但如果MyView将包含在容器层次结构更高的其他渲染中,那么在render中返回新视图的内容难道不可能吗

因此,我希望能够:

class MyView extends View {
  render() {
    return (
      <Stuff />
    );
  }
}
类MyView扩展了视图{
render(){
返回(
);
}
}

这是可能的,但不鼓励这样做。“四人帮”给我们的规则是“偏爱组合”而不是继承。作文要灵活得多


你应该直接归还你的东西

class MyView extends View {
    render() { return <Stuff/>; }
}
类MyView扩展了视图{
render(){return;}
}

正如blockhead的回答所述,不鼓励继承。但你所描述的类似的东西可以通过构图来实现

您可以创建一个基本组件,该组件始终可以是一个列表组件,根据路由加载不同的组件。其中,例如,特定数据的加载可以始终由BaseComponent完成,并通过道具传递给子级

为此,您还需要不同的容器,这些容器调用包含不同子组件的BaseComponents

最后,容器的外观如下所示:

<BaseComponent>
   <Children1 />
   <Children2 />
</BaseComponent>

以及:



我同意继承与组合的观点。尽管如此,继承不应该被完全禁止,对于某些事情来说,它是一种有效且有用的技术。在这里,我想介绍一种支持某些基本行为的视图。我想,如果进行渲染的视图已经是一个视图,为什么我必须返回另一个渲染视图。支持合成并不意味着放弃继承,至少在我的书中是这样:)正如我上面回答的,我认为继承有一个有效的角色(虽然在大多数使用继承的情况下都应该使用组合)。但我的问题是,包含组件是否可以只返回它的子组件,而不是添加另一层“自身”:
<BaseComponent>
   <Children10 />
   <Children12 />
</BaseComponent>