首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React JS:祖孙之间的数据流

React JS:祖孙之间的数据流
EN

Stack Overflow用户
提问于 2015-08-06 02:57:04
回答 1查看 513关注 0票数 0

我打算设置以下React组件

代码语言:javascript
复制
    <tab-box>
        <title>Example</title>
        <butons>
            <button id="actionID1"></button>
            <button id="actionID2"></button>
            <button id="actionID3"></button>
        </butons>
        <content>
            <tabList>
                <tab id="tab1" label="label1"></tab>
                <tab id="tab2" label="label2"></tab>
            </tabList>
        </content>
    </tab-box>

在这里,我想为tab提取每个label属性,以便在实际内容之上设置一个导航栏。

问题是,我如何从嵌套子元素中提取属性?或者,我如何重新构造组件,使我不会遇到这个问题?

Thought1:使用全局商店服务,像tab这样的孩子填充商店,父母可以在挂载时检索它们

更新,Thought2:让labels成为标签框上的道具,但我仍然觉得不太对劲。

EN

回答 1

Stack Overflow用户

发布于 2015-08-06 07:22:30

有很多方法可以做到这一点,但我怀疑这是你最终想要的。您希望家长获取有关孩子的信息吗?这是没有意义的,因为您正在尝试创建“组件”,而不是一些特定于某个任务的代码。

这样想吧。选项卡应该使用选项卡组件来显示自己的信息。在什么情况下,选项卡会比它的父级了解更多?如果是这样,那么它甚至是一个组件吗?谁在使用谁?

React适合于数据从父级到子级的单向流动,因此在选项卡组件中保存信息并将部分信息传递给子选项卡更有意义。

代码语言:javascript
复制
<tabs>
    <button text={tab[0].text}/>
    <tab>
        write transcluded children here
    </tab>
</tabs>

即使这样也回避了一个问题--为什么你一开始就使用这么多组件?为什么不像普通人一样使用css类来表示标签、容器和单个标签呢?

如果您坚持要创建一个选项卡组件,至少要将所有内容都放在一个组件中,比如

代码语言:javascript
复制
<tabs data={[{title:"tab-title", content: (<p>stuff</p>)}]} />

另外,我绝对不同意在模型/商店中定义标签。常识是UI和数据应该分开。

正如其他人提到的,您可以使用ref,但我会将其保留用于非常有限的目的,例如从表单中获取字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31840666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档