【React入门学习】5.组件 & Props

485 阅读1分钟

组件 & Props

React 组件允许你将 UI 拆分为独立可复用的代码片段,并对每个片段进行独立构思。

函数组件与 class 组件

定义组件最简单的方式就是编写 JavaScript 函数:

        function Welcome(props) {
            return <h1>Hello, {props.name}</h1>;
        }
        ReactDOM.render(
            Welcome(props),
            document.getElementById('root')
        )

image.png

image.png

同时还可以使用 ES6 的 class 来定义组件:

在使用Class来定义组件时,需要注意React 对于 Class 和function的区别,具体可以参考下面的文章:juejin.cn/post/684490…

image.png

image.png

渲染组件

React 元素也可以是用户自定义的组件:

const element = <Welcome name="Sara" />;

当 React 元素为用户自定义组件时,它会将 JSX 所接收的属性(attributes)以及子组件(children)转换为单个对象传递给组件,这个对象被称之为 “props”。

image.png

image.png

组合组件

组件可以在其输出中引用其他组件。这就可以让我们用同一组件来抽象出任意层次的细节。按钮,表单,对话框,甚至整个屏幕的内容:在 React 应用程序中,这些通常都会以组件的形式表示。

例如,我们可以创建一个可以多次渲染 `Welcome` 组件的 `App` 组件:

image.png

image.png

提取组件

将组件拆分为更小的组件。参考如下 Comment 组件:

function Comment(props) {
  return (
    <div className="Comment">
      <div className="UserInfo">
        <img className="Avatar"
          src={props.author.avatarUrl}
          alt={props.author.name}
        />
        <div className="UserInfo-name">
          {props.author.name}
        </div>
      </div>
      <div className="Comment-text">
        {props.text}
      </div>
      <div className="Comment-date">
        {formatDate(props.date)}
      </div>
    </div>
  );
}

首先,我们将提取 Avatar 组件:

image.png

组件&props.jpg

image.png

image.png