React 组件示例

Posted by Li Hui on Thursday, January 6, 2022

上一节,我们使用 create-react-app 生成示例程序的代码,这一节我们详细介绍下如何进行修改代码

看了一些 React 的书籍,其实 React 使用 JSX 语法,将程序的模块化和抽象做的很好。

我们新建立的程序的目录如下

moz-todo-react
├── README.md
├── node_modules
├── package.json
├── package-lock.json
├── .gitignore
├── public
│   ├── favicon.ico
│   ├── index.html
│   ├── logo192.png
│   ├── logo512.png
│   ├── manifest.json
│   └── robots.txt
└── src
    ├── App.css
    ├── App.js
    ├── App.test.js
    ├── index.css
    ├── index.js
    ├── logo.svg
    ├── reportWebVitals.js
    └── setupTests.js

关于目录结构的表述我这里直接引用 Mozilla 的描述

目录 src 是我们花费时间最多的地方,因为它是我们 React 应用源码存放的目录。

目录 public 包含了开发应用时浏览器会读取的文件,其中最重要的就是 index.html。React 将目录 src 中的代码嵌入这个文件,从而浏览器才能运行此文件。 index.html 中的有些内容关乎 create-react-app 的运作,因此除非你知道自己在做什么样的修改,否则不建议编辑这个文件。当然,你可以修改 index.html 中的 元素的内容来表现此应用程序通俗易懂的名称。

package.json 与 react 工程并无直接关联,这个是 node modules 的管理的文件。其他的 node 版本管理的软件都会有这个文件。

React 中最小的就是组件,那何为组件呢,组件的大小如何界定呢?

何为组件

组件是组成应用程序的最小单元,使用组件可以大大减轻软件开发的工作,提高软件开发的效率,一般组件是实现单一功能的

下面以《深入 React 技术栈》中的例子为例讲述组件元素的构建

下面是一个带有 btn btn-blue 的按钮,且其中有 em 元素,且其中有字符串 Confirm

<button class="btn btn-blue">
 <em>Confirm</em>
</button>

若转移为 Json 对象如下

{
    type: 'button',
    props: {
        className: 'btn btn-blue',
        children: [{
            type: 'em',
            props: {
                children: 'Confirm'
            }
        }]
    }
}

转移为组件元素封装

const Button = ({color,text}) =>{
    return {
        type: 'button',
        props: {
            className: `btn btn - $ {
                color
            }`,
            children: {
                type: 'em',
                props: {
                    children: text,
                },
            },
        },
    };
}

由此我们就有了第一个组件 Button

参考

  1. https://developer.mozilla.org/zh-CN/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/React_getting_started
  2. 《深入 React 技术栈》