[Day28] React - 建立React 元件 (Component )

前面介绍了如何用JSX语法建立React元素,接着这篇会记录如何建立React元件,即前面提到的React的核心观念-Component。

React Component 主要功能就是可把很多的React元素包起来,包装成一个个组件,再透过这些元件/组件的名称将内容显示出来。

这里我会用前面提到的CodeSandbox来实作React。


建立元件

React元件有两种建立方式,这篇会用Functional的方式来建立元件:

  1. Class-based 类别元件

    class Welcome extends React.Component {
      render() {
        return <h1>Hello, {this.props.name}</h1>;
      }
    }
    
    ReactDOM.render(<Welcome name="Judy" />, document.getElementById('root'));
    
  2. Functional 函式元件 (在16.8版React新增了新功能hook後,即让函式元件的功能更完整,几乎可以做到类别元件可以做到的事)

    function Welcome(props) {
      return <h1>Hello, {props.name}</h1>;
    }
    

  • 首先,建立一个元件档案,元件档名规定必须是大写的驼峰式命名,也就是每个单字的第一个字母要大写。(如: MyComponent.js)
    https://ithelp.ithome.com.tw/upload/images/20210928/20141293vz5NQ3cPl0.png

  • 接着我要使用箭头函式建立一个函式元件,这边要注意的是,函式名称就是元件名称,所以这里的函式名称就是MyComponent。

  • 而return的内容即是这个元件要包含的内容,这里则是使用JSX的语法直接产生一个React元素。

  • 最後我们要把这个元件export出来,才能在其他档案使用这个元件。

import React from "react";

const MyComponent = () => {
  return <input />;    //因input没有子元素及结尾元素,所以要用Self-Closing Tag
};

export default MyComponent;

将元件渲染到画面上

  • 接着建立一个主要的档案index.js,目标要让刚刚建立的MyComponent元件render到DOM,并显示在画面。
    https://ithelp.ithome.com.tw/upload/images/20210929/20141293RomRQsHeW8.png

  • 除了import react & react-dom 外,也要引入刚刚建立的MyComponent.js元件

  • 使用jsx语法render MyComponent.js元件,用<MyComponent />表示,因为没有任何的子元素及结尾元素,所以要用Self-Closing Tag

import React from "react";
import ReactDOM from "react-dom";

import MyComponent from "./MyComponent";

ReactDOM.render(<MyComponent />, document.getElementById("root"));

<<:  Day 23 Git → Gitlab-CI 超简单

>>:  [Day 14] 常用数据显示 Table 表格-2(可调式)

Outlook 2007常见问题 - 整理常被问到的案件

PST档单一档案20GB 超过或将近 , 造成开启无反应或者需时很久. 解决1:scanpst 修...

Angular 深入浅出三十天:表单与测试 Day01 - 前言

何谓表单? 维基百科是这样说的: 表单是一种带有空格可用於书写以及能选择和勾选相似内容的文件。 表...

Day 1 Introduction

前情提要 我是 siriuskoan,在这三十天内会把一些关於 flask 的知识写成文章,以供自己...

Day 13 - Futures期货、Options选择权Order建立

本篇重点 Futures期货Order建立 Options选择权Order建立 由於前一篇有说明Or...

Day15 Lua 的全域环境变数 _G 与 _ENV

上一回在研究 rom/programs/monitor.lua 的过程中 看到一些大写的变数 _G,...