组件如何对其子组件进行布局?

2024-01-03

我已经使用 React 几个星期了,所以我还远不​​是专家。这就是问题所在:我正在构建一些布局其子组件的组件。这是一个Layout可以这样使用:

var SomeComponent = React.createClass({
    render: function () {
        return (
            <Layout>
                <...child 1/>
                <...child 2/>
                ...
            </Layout>
        );
    }
});

好吧,布局不拥有孩子,所以它不能修改他们的道具。它也不能克隆子级,因为它们可能包含引用。布局能否将每个子元素包装在(正确定位的)div 中?具有 ref 的子级会导致 SomeComponent ref 的正确更新吗?有更好的方法吗?

我更多地思考了亲子沟通这个普遍问题,也比以前更加困惑了。文档指出:

“亲子交流,只需传递道具即可。”

在文档的相关部分中,我们发现:

“在 React 中,所有者是设置其他组件的 props 的组件。”

那么,什么给出呢?在我看来,这只有所有者(而不是父级)可以设置道具.

这已经在几篇文章中讨论过,但我没有找到令人满意的答案。一些答案建议克隆父级中的子级,但是如果原始所有者在其“所有者”中设置 ref 属性,我们就会遇到问题。在上面的示例中,SomeComponent 拥有作为子级传递给 Layout 的组件。如果我在布局中克隆子级(例如,添加回调),则布局将成为克隆的所有者,因此 SomeComponent 引用将无法获取它们。

我完全困惑了。


我不完全确定你在问什么,但有些东西像你的包装组件<Layout />可以给孩子做。

您提到您想将每个子组件包装在 div 中。这是一个例子:

var Layout = React.createClass({
    render: function() {
        var children = [];
        if (this.props.children) {
            for (var i=0; i < this.props.children.length; i++) {
                var child = this.props.children[i];
                children.push(
                    <div className="child-container">
                        {child}
                    </div>
                );
            }
        }

        return (
            <div className="layout-container">
                {children}
            </div>
        );
    }
});

在上面你可以看到你可以访问的孩子Layout in this.props.children这只是一个子组件数组。因此,通过使用上面的简单 for 循环,或使用this.props.children.map您可以按照自己喜欢的方式包装每个子项并渲染它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

组件如何对其子组件进行布局? 的相关文章

随机推荐

  • 在 Windows 应用商店应用程序中获取 CoreDispatcher 的正确方法

    我正在构建一个 Windows 应用商店应用程序 并且有一些代码需要发布到 UI 线程 为此 我想检索 CoreDispatcher 并使用它来发布代码 似乎有几种方法可以做到这一点 First way Windows Applicatio
  • 如何从列的每一行中删除重复的字符?

    如何使用 R 从列的字符串中删除重复字符 例如 这是我的专栏 df lt data frame name c A a a b c d d d B a b b b f C d d d d D a a 还有我期待的专栏 df lt data f
  • 如何向 pagedown 添加自定义图像标签?

    我正在尝试复制原始内容img自定义标签的功能img将添加到 pagedown 转换器的标记 例如 我复制原始行为 image url 1 1 http lolink com gives img src http lolink com 变成一
  • Django_Socketio 和 Apache

    我对网络开发还很陌生 最近我一直在使用 Django 制作一个网站 我对在网站中实现 websocket 非常感兴趣 为了实现这一点 我使用了 django socketio 可在 git hub 上找到 https github com
  • Android缩放动画闪烁

    我的应用程序中有框架布局 在框架中我有 ImageView 和 TextView 我一直需要框架布局反弹 我用 xml 制作了这个动画
  • 通过ObjectOutputStream将LinkedList写入文本文件但输出是垃圾

    当我尝试将链接列表的内容写入文本文件时 出现输出错误 try FileOutputStream out new FileOutputStream ValidMovesMatrix txt ObjectOutputStream oout ne
  • 当用户确认“离开页面”时触发 javascript 函数

    我正在使用下面的代码来触发confirmExit 当用户尝试离开页面时函数 window onbeforeunload confirmExit function confirmExit return Are you sure you wan
  • RxJava。顺序执行

    在我的 Android 应用程序中 我有一个演示者 它处理用户交互 包含某种请求管理器 如果需要 可以通过请求管理器将用户输入发送到请求管理器 请求管理器本身包含服务器 API 并使用此 RxJava 处理服务器请求 我有一个代码 每次用户
  • Oracle 不同模式上的表名相同吗?

    是否可以在不同模式上使用相同的表名称 而在一个数据库中的表上使用不同的数据 我认为我不应该创建多个数据库 包含相同的表名 而应该创建多个模式 就像是 Schema 1 table A table B Schema 2 table B tab
  • 图解:python语言重路由问题测试

    贵公司有N服务器 信息通过连接从一台服务器流向另一台服务器 如果信息从服务器流出i到服务器j then 联系 i j 某些服务器连接 i i 是可能的 这意味着信息不会进一步流动 给定一个由 N 个整数组成的数组连接 您的任务是对连接数组值
  • 如何根据当前服务器找到最合适的缓冲区大小来读取或写入Stream

    我正在编写一个服务器 它将准备好并写入巨大的文件 数据库 我在很多地方使用了 Stream 读写函数 其中我使用 8192 作为缓冲区大小 我还从 TCP 套接字读取大量输入 我不知道将部署该服务的虚拟机的配置是什么 是否有任何内置函数可以
  • Lucene 通配符查询

    我有一个关于 Lucene 的问题 我有一个表单 并从中获取文本 我想在多个字段中执行全文搜索 假设我从输入中获取文本 textToLook 我有一个带有多个过滤器的 Lucene 分析器 其中之一是 lowerCaseFilter 因此当
  • lxml.objectify 和前导零

    当 objectify 元素打印在控制台上时 前导零会丢失 但它会保留在 text gt gt gt from lxml import objectify gt gt gt gt gt gt xml a b 01 b a gt gt gt
  • 在scala中,如何使类型类适用于Aux模式? - 第2部分

    这是以下问题的后续问题 在scala中 如何使类型类适用于Aux模式 https stackoverflow com questions 65838535 in scala how to make type class working fo
  • Python - 从类主体内部引用类名

    在Python中 我想要一个类属性 一个带有初始化值的字典 我写了这段代码 class MetaDataElement MD INVALID MD CATEGORY MD TAG range 3 mapInitiator2Type Meta
  • 将 DateTime 保存到 Cassandra Date 列

    Cassandra NET 驱动程序文档非常糟糕 我试图拼凑一些功能性的东西 但我浪费了很多时间试图更改我找到的 Java 文档中的代码 我正在尝试使用 Cassandra 驱动程序将数据写入一个简单的表 该表已经存在并且里面有日期 我创建
  • basicAuth configprerender basicAuth 配置

    我正在运行一个预渲染服务器 https prerender io documentation一切都很好 但现在我想使用设置一些安全性基本验证 https github com prerender prerender basicauth 在我
  • 表视图中的复选框单元格:用户无法选中它

    我需要使用复选框单元格的帮助 我目前将对象添加到表视图中 看起来没问题 直到我尝试构建和运行程序 但我无法选中该复选框 我目前正在使用一个表格视图 它显示项目运行时 每个项目都有一个复选框 这样我就可以有多个选择 我是 xcode 新手 这
  • 为网站的私人测试版添加安全层的最不显眼的方法是什么?

    假设我有一个 ASP NET 站点 在本例中为 MVC 它使用表单身份验证和典型的会员系统 该网站允许经过身份验证的用户和匿名用户 当我将网站作为私人测试版发布时 我想在应用程序之上添加另一层安全性 例如超级用户的 https superu
  • 组件如何对其子组件进行布局?

    我已经使用 React 几个星期了 所以我还远不 是专家 这就是问题所在 我正在构建一些布局其子组件的组件 这是一个Layout可以这样使用 var SomeComponent React createClass render functi