2017-02-15 85 views
2

说我想创建一个组件,它是一个观点,我觉得我会做这样的事情:组件继承的阵营

class MyView extends View { 
    render() { 
    return (
     <View ...> 
     <Stuff /> 
     </View> 
    ); 
    } 
} 

现在,我可能不知道这里是一些很基本的东西,但它会不可能仅仅是在渲染中返回我的新视图的内容,因为MyView将被包含在其他渲染更高的包容层次结构中?

所以我希望能这样:

class MyView extends View { 
    render() { 
    return (
     <Stuff /> 
    ); 
    } 
} 

回答

1

你应该直接返回你的东西。

class MyView extends View { 
    render() { return <Stuff/>; } 
} 
1

这是可能的,但一个泄气。四人帮给我们的规则是“赞成构成”而不是继承。构图更灵活。

The official React docs discuss this as well

+1

我继承VS组成了意见分歧。尽管如此,继承不应该完全被禁止,对于某些事情来说,它是一种有效且有用的技术。在这里,我想介绍一种支持某些基本行为的View类型。我想为什么我必须返回另一个呈现的视图,如果进行渲染的视图已经是视图。 – Janos

0

由于黑头的答案指出,继承是不鼓励的。但是,与你所描述的东西类似的东西可以用组合来实现。

您可以创建一个基本组件,它总是可以是一个List组件,其中不同的组件根据路径加载。例如,加载特定数据总是可以由BaseComponent完成,并且只需通过道具传递给Children。

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

在结束时,容器会这样看:

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

和:

<BaseComponent> 
    <Children10 /> 
    <Children12 /> 
</BaseComponent> 
+0

有利组合并不意味着放弃继承,至少在我的书中没有:)正如我在上面回答的那样,我认为继承有一个有效的角色(尽管在大多数使用继承的情况下组合应该被使用)。但我的问题是真正围绕一个包含组件是否可以返回它的子组件,而不是添加另一个“自己”层:) – Janos