gpt4 book ai didi

javascript - 创建一个仅作为容器(没有其他功能)的 div(或其他元素)

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:11 25 4
gpt4 key购买 nike

我想创建一个“空”容器 div,它的唯一目的是对子元素进行分组。换句话说,这个容器对页面中的其他元素应该没有影响

我需要这样一个容器的原因是为了分组 React元素而不影响页面布局和样式。

const ReduxObservers = function(props)
{
return (
<EmptyContainer>
<ReduxObserver1/>
<ReduxObserver2/>
</EmptyContainer>
);
}

const AppContainer = function(props)
{
return (
<EmptyContainer>
<App/>
<ReduxObservers/>
</EmptyContainer>
);
}

以上只是一个粗略的例子,但它有助于展示我正在努力实现的目标。

  • <App>代表我们应用程序的可见部分(即呈现 DOM 元素)。
  • <ReduxObserver>代表我们应用程序的不可见部分(即呈现 null )

<AppContainer>包装这些组件(在我们的帮助下 <EmptyContainer> )并且可能是 <body> 的 child 或其他一些元素。

我该如何设计<EmptyContainer>这样它就不会影响其周围/子元素的布局/样式?


我曾想过<EmptyContainer>通过 all: inherit; ‘克隆’它的父元素但是我预见到这种方法的问题(例如父级有填充或边距的情况)不会使其成为真正的副本。设置额外的 margin: 0px; padding: 0px;可能会绕过这个问题,但我担心可能会出现其他问题。


理想情况下,如果有一种方法可以将样式和布局级联到第一个“非空”祖先,那将是最好的解决方案。例如,如果我们有一个 <parent> -> <EmptyContainer> -> <child>层次结构.. 如果让我们假设<child>width:100%; height:100% , 它会计算这些属性和任何其他布局/样式 <parent> , 忽略 <EmptyContainer>完全。但我一直没能找到这样做的方法。


我还想过设置 <EmptyContainer> div 到 position:absolute;这样它的布局就不会影响它的 child ,但这同样不能涵盖所有情况。


所以我求助于您,希望能有一些解决方案来解决我正在尝试做的事情。

最佳答案

如果您使用的是 React 16,则可以使用片段,如下所示:

const AppContainer = function(props) {
return (
<React.Fragment>
<App/>
<ReduxObservers/>
</React.Fragment>
);
}

正如@stojkosd 在评论中提到的,不要忘记import React, { Fragment } from 'react'

如果您不能使用 React 16,有一种方法可以定义一个组件,该组件将充当包装器但不会呈现任何标记。这种情况下的组件通常称为 Aux(来自 auxiliary),它只会渲染作为 props 传递的子组件。这是组件的样子:

const Aux = (props) => (props.children);

然后你可以这样做:

const AppContainer = function(props) {
return (
<Aux>
<App/>
<ReduxObservers/>
</Aux>
);
}

关于javascript - 创建一个仅作为容器(没有其他功能)的 div(或其他元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48460784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com