作为React世界的初学者,我想深入了解当我使用{this.props时发生了什么。Children}和什么情况下使用相同。它在下面的代码片段的相关性是什么?

render() {
  if (this.props.appLoaded) {
    return (
      <div>
        <Header
          appName={this.props.appName}
          currentUser={this.props.currentUser}
        />
        {this.props.children}
      </div>
    );
  }
}

当前回答

对于子节点,有一个父节点,它是打开/关闭标签,就像在React的官方示例中看到的那样,即FancyBorder。

h1和p是FancyBorder的子元素。您可以通过CodePen链接在实践中检查它。

其他回答

道具。Children表示调用/呈现组件时开始标记和结束标记之间的内容:

const Foo = props => (
  <div>
    <p>I'm {Foo.name}</p>
    <p>abc is: {props.abc}</p>

    <p>I have {props.children.length} children.</p>
    <p>They are: {props.children}.</p>
    <p>{Array.isArray(props.children) ? 'My kids are an array.' : ''}</p>
  </div>
);

const Baz = () => <span>{Baz.name} and</span>;
const Bar = () => <span> {Bar.name}</span>;

invoke /电话/ Foo负责:

<Foo abc={123}>
  <Baz />
  <Bar />
</Foo>

这是回答,但想添加一个优化示例。您可以内联分解以只获得特定的属性,而不是整个props对象(这意味着您不必一直编写props)。

const MyView = ({title, children}) => {
  return (
    <>
      <h1>{title}</h1>
      {children}
    </>
  );
}

然后你可以这样使用它:

import { MyView } from './MyView';

const MyParentView = () => {
  return (
    <MyView title="Hello">
      <h2>World</h2>
    </MyView>
  );
}

最终的结果将是HTML,呈现出如下内容:

<div>
  <h1>Hello</h1>
  <h2>World</h2>
</div>

在React中,道具。children属性指向传递给React组件的子元素。

例如,在以下代码中:

<MyComponent>
  <div>Child 1</div>
  <div>Child 2</div>
</MyComponent>

MyComponent组件有两个子元素:一个div元素包含文本“Child 1”,另一个div元素包含文本“Child 2”。MyComponent组件可以使用这些道具访问和呈现这些子组件。孩子们的财产。

例如,MyComponent组件可以像这样呈现它的子组件:

class MyComponent extends React.Component {
  render() {
    return (
      <div>
        {this.props.children}
      </div>
    );
  }
}

这将把两个div元素呈现为MyComponent组件的子元素。

这里需要注意的重要一点是,子组件是用于将数据从父组件传递到子组件的特殊道具,但这些数据必须包含在父组件的开始和结束标记中。这主要用于一些包装器组件中,我们必须通过这些包装器组件将数据传递给下一个组件,以及我们传递静态数据的数据(在大多数情况下),因为对于动态数据,有另一种方式将道具传递给组件。

下面是一个例子

对于子节点,有一个父节点,它是打开/关闭标签,就像在React的官方示例中看到的那样,即FancyBorder。

h1和p是FancyBorder的子元素。您可以通过CodePen链接在实践中检查它。