当前位置: 首页 > 知识库问答 >
问题:

反应渲染特定的子对象

司徒经纶
2023-03-14

我看过其他人提出的与此相关的问题,但找不到合适的答案。我希望将子对象传递给组件,然后在需要它们的地方拉出特定的子对象,我看到的大多数示例都是在相同的位置渲染子对象。

我的组件看起来像这样-

<ParentComponent>

<ChildOne/>
<ChildTwo/>

<ParentComponent/>

当我记录道具时。父组件中的子组件我得到一个数组,其中包含两个子组件作为对象。是否有一种简单的方法可以在我需要的地方提取特定的子对象,例如我正在使用道具时的{props.children.ChildOne}。children[0]这并不理想,因为我们将在将来动态传递子元素,并且数组长度可能会更改。

一如既往,任何帮助都非常感谢!

共有3个答案

鄢松
2023-03-14

一种方法是通过包含ParentComponent及其子组件的组件中的state/props/redux存储管理来控制传递给ParentComponent的子组件。

但是为了根据您的用例获得解决方案,我们可以避免使用childrenprop,并在ParentComponent上使用我们定义的prop。

<ParentComponent
    components={[
     {key: 1, component: <div>Hello</div>}
    ]}
/>

所以,我们现在可以从密钥过滤。

看看这个演示

管峻
2023-03-14

实际上,我刚才提到的API在这里是无用的。

您可以这样做:

import React from 'react';
import { ChildOne } from './YourFile';

export function ParentComponent({children}) {
  return children.find(child => child.type === ChildOne)
}

李昱
2023-03-14

根据您的确切情况和需求,将子组件作为道具传递可能比使用特殊的道具更有意义。然后你可以用你喜欢的任何方式渲染它们。

<ParentComponent childOne={ChildOne} childTwo={ChildTwo} />
...
const ParentComponent = ({ childOne, childTwo }) => {
  return (
    <div>
      {childOne}
      <div>
        {childTwo}
      </div>
    </div>
  );
};

但是了解您的具体场景将有助于概念化实现这一点的最佳方式。也许您可以重构代码,以避免像这样传递子数组。

 类似资料:
  • 在reactjs中,我试图从贴图对象渲染组件。更具体地说,按下一个按钮,我创建了一个新的“FormRow”组件,为了方便起见,我将其存储在javascript映射对象中(因为稍后我将使用它)。无论何时,我都想渲染刚刚添加的新组件,但我不知道如何从贴图中获取它。 我尝试以不同的方式解决我的问题,使用: myMap.for每个(key= 我没有尝试的是: https://stackoverflow.c

  • 问题内容: 我有一个应用程序,需要动态设置元素的高度(让我们说“ app-content”)。它获取应用程序“ chrome”的高度,然后减去它的高度,然后将“ app- content”的高度设置为在这些限制内适合100%。这对于香草JS,jQuery或Backbone视图来说非常简单,但是我正在努力弄清楚在React中执行此操作的正确过程是什么? 以下是一个示例组件。我希望能够将的高度设置为窗

  • 它还在继续被渲染。我想阻止它。 由于这个问题,从Api接收到的照片和文本一直在随机变化。 我认为使用效果是问题所在。请让我知道,因为我是初学者。 这是useFetch.jsx 这是Main.jsx

  • 问题内容: 我已经实现了一个Modal组件,该组件在屏幕上显示一个模态对话框。通常,模态将有条件地显示。我可以通过两种方法在render函数中执行此操作: 在Modal组件中,我使用this.props.show为其自身添加了一个不同的类。如果为假,它将添加display:none以隐藏模式。 另一种方式是这样的: 这用于确定是否在渲染中添加Modal。 我想找出的是: 这两种方式有何不同? 其中

  • 所以就像标题所说的,我的应用程序的主页因为某种原因渲染了两次,我不知道为什么。从我的浏览器路由器,我最初调用一个JS文件,从那里我调用我的HomePage组件和React路由器,但然后我的页面渲染两次,我不知道为什么。 我的浏览器路由器(index.js): 然后pp.js被称为: 然后我的主页组件(index.jsx): 和路线。js: 但是我的页面是这样渲染的: 我真的很困惑,所以任何建议都会

  • 在代码示例中,在 当react遇到路由组件(react路由器的一部分)的渲染道具时,它会传递什么道具? 鉴于https://reactjs.org/docs/render-props.html ,render prop是一个函数prop,组件使用它来知道要渲染什么,是传递给props的值,该props埋在react router中的Route声明中