Blog
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)

HiuZing

🍑
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)
  • 前端面试题

  • JavaScript

  • Vue2

  • port

  • CSS

  • Node.js

  • JavaScript优化

  • uniapp

  • Mini Program

  • TypeScript

  • 面向对象编程

  • UI组件

  • Plugin

  • Vue3

  • 性能优化

  • Axios

  • 状态管理

  • React

    • 教程

      • React 简介
      • React 组件
      • React 应用
        • react脚手架
          • 创建项目并启动
          • react脚手架
          • 功能界面的组件化编码流程(通用)
        • 组件的组合使用-TodoList
      • React AJAX
      • React Router5
      • React Redux
      • React 扩展内容
      • React Router6
      • React Router Hooks
      • React Hooks
    • 实战

  • Mock

  • Icon

  • Template

  • 构建工具

  • 项目规范配置

  • Taro

  • SVG

  • React Native

  • 前端
  • React
  • 教程
HiuZing
2023-04-28
目录

React 应用

# react脚手架

基于React脚手架

# 创建项目并启动

第一步,全局安装:npm i -g create-react-app 第二步,切换到想创项目的目录,使用命令:create-react-app hello-react 第三步,进入项目文件夹:cd hello-react 第四步,启动项目:npm start

# react脚手架

public ---- 静态资源文件夹
	favicon.icon ------ 网站页签图标
	index.html -------- 主页面
	logo192.png ------- logo图
	logo512.png ------- logo图
	manifest.json ----- 应用加壳的配置文件
	robots.txt -------- 爬虫协议文件
src ---- 源码文件夹
	App.css -------- App组件的样式
	App.js --------- App组件
	App.test.js ---- 用于给App做测试
	index.css ------ 样式
	index.js ------- 入口文件
	logo.svg ------- logo图
reportWebVitals.js
	--- 页面性能分析文件(需要web-vitals库的支持)
setupTests.js
	---- 组件单元测试的文件(需要jest-dom库的支持)

# 功能界面的组件化编码流程(通用)

启动——./src/index.js——引入react核心库、reactDOM、样式、APP、——触发reactDOM.render——渲染APP——自动找public/index.html中root节点(靠webpack配置)

# 组件的组合使用-TodoList

一、todoList案例相关知识点

​ 1.拆分组件、实现静态组件,注意:className、style的写法

​ 2.动态初始化列表,如何确定将数据放在哪个组件的state中?

​ ——某个组件使用:放在其自身的state中

​ ——某些组件使用:放在他们共同的父组件state中(官方称此操作为:状态提升)

​ 3.关于父子之间通信:

​ 1.【父组件】给【子组件】传递数据:通过props传递

​ 2.【子组件】给【父组件】传递数据:通过props传递,要求父提前给子传递一个函数

 4.注意defaultChecked 和 checked的区别,类似的还有:defaultValue 和 value

​ 5.状态在哪里,操作状态的方法就在哪里

// Header
// 对接收的props进行:类型、必要性限制
// eslint-disable-next-line react/no-typos
static PropTypes = {
    addTodo:PropTypes.func.isRequired
}
// 键盘事件的回调
// 子组件向父组件传递,调用父组件的方法
handleKeyUp = (event) => {
    // 解构赋值获取keyCode,target
    const {keyCode, target} = event
    // 判断是否是回车按键
    if (keyCode !== 13) return
    // 添加的todo名字不能为空
    if (target.value.trim() === '') {
        alert('输入不能为空')
        return;
    }
    // 准备好一个todo对象
    const todoObj = {
        id: nanoid(),
        name: target.value,
        done: false
    }
    // 将todoObj传递给App
    this.props.addTo(todoObj)
    // 清空输入
    target.value = ''
}

// App
// 初始化状态
state = {
    todos: [
        {id: '001', name: '吃饭', done: true},
        {id: '002', name: '睡觉', done: true},
        {id: '003', name: '打代码', done: false},
    ]
}
// 父组件接收参数后,修改自己的状态值,另外一个子组件再拿取该状态值
addTo = (todoObj) => {
    // 获取原todos
    const {todos} = this.state
    // 追加一个todo
    const newTodos = [todoObj, ...todos]
    // 更新状态
    this.setState({
        todos: newTodos
    })
}
render() {
    const {todos} = this.state
    return (
        <Header addTo={this.addTo}/>
	);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#React
上次更新: 2024/08/14, 04:14:33
React 组件
React AJAX

← React 组件 React AJAX→

最近更新
01
React Native 使用SVG
08-13
02
Docker基础命令
08-04
03
算数逻辑单元
07-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 WeiXiaojing | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式