IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> [react] hooks基础 === -> 正文阅读

[JavaScript知识库][react] hooks基础 ===

hooks是什么?

Hooks:钩子、钓钩、钩住。

是一些可以让你在函数组件里“钩入” React state 及生命周期等特性的函数。

是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。

作用: 为函数组件提供状态、生命周期等原本 在Class 组件中才提供的功能

  • Hooks 只能在函数组件中使用

  • 可以理解为通过 Hooks 为函数组件钩入 class 组件的特性

Hooks 前后,组件开发模式的对比

  • React v16.8 以前: class 组件(提供状态) + 函数组件(展示内容)

  • React v16.8 及其以后:

    1. class 组件(提供状态) + 函数组件(展示内容)

    2. Hooks(提供状态) + 函数组件(展示内容)

    3. 混用以上两种方式:部分功能用 class 组件,部分功能用 Hooks+函数组件

为什么要有 Hooks?

两个角度:1.组件的状态逻辑复用? ? ?2.class 组件自身的问题

react组件的本质

React 是用于构建用户界面的 JavaScript 库 。

React组件是对特定功能的封装,主要用来对UI进行拆分。

React 组件的模型其实很直观,就是从 Model 到 View 的映射,这里的 Model 对应到 React 中就是 state 和 props

公式:组件(State+Props) = UI ?

class 组件自身的问题

根据状态来渲染UI这件事上,class 组件并没有发挥它最重要的功能:

  • 组件之间很少继承

  • 组件之间很少相互访问

函数式组件的好处

  1. 函数本身比较简单,更好的胜任根据状态来渲染UI这件事

  2. hooks让函数组件内部有了维护状态的能力

  3. hooks带来了组件的逻辑复用能力

hooks的使用策略

  1. react没有计划从React中移除class

  2. Hook 和现有代码可以同时工作,你可以渐进式地使用:

    1. 不推荐直接使用 Hooks 大规模重构现有组件

    2. 推荐新功能用 Hooks,复杂功能实现不了的,也可以继续用 class

    3. 找一个功能简单、非核心功能的组件开始使用 hooks

  3. class 组件相关的 API 在hooks中可以不用

    1. state与setState

    2. 钩子函数,componentDidMountcomponentDidUpdatecomponentWillUnmount

    3. `this 相关的用法

  4. 原来学习的内容还是要用的

    1. JSX:{}onClick={handleClick}、条件渲染、列表渲染、样式处理等

    2. 组件:函数组件、组件通讯

    3. React 开发理念:单向数据流状态提升

?

useState-基本使用

使用useState为函数组件提供状态

使用场景

当你想要在函数组件中,使用组件状态时,就要使用 useState 这个Hook 了

作用

为函数组件提供状态(state)

步骤

  1. 导入。 useState 函数

  2. 调用 useState 函数,传入初始值,返回状态修改状态的函数

  3. 使用

    1. 在 JSX 中展示状态

    2. 特定的时机调用修改状态的函数来改状态

示例

import { useState } from 'react'
//  useState 是hook,hook是use开头的函数
const Count = () => {  
  // 0 是初始值
  // 返回值是一个数组
  const stateArray = useState(0)

  // 状态值 -> 0
  const state = stateArray[0]
  // 修改状态的函数
  const setState = stateArray[1]

  return (
    <div>
      {/* 展示状态值 */}
      <h1>useState Hook -> {state}</h1>
      {/* 点击按钮,让状态值 +1 */}
      <button onClick={() => setState(state + 1)}>+1</button>
    </div>
  )
}
  • 参数:状态初始值。比如,传入 0 表示该状态的初始值为 0

    • 注意:此处的状态可以是任意值(比如,数值、字符串等),而 class 组件中的 state 必须是对象

  • 返回值:数组,包含两个值:1 状态值(state) 2 修改该状态的函数(setState)

使用数组解构简化代码

使用数组解构简化 useState 的使用。约定:修改状态的函数名称以 set 开头,后面跟上状态的名称

// 解构出来的名称可以是任意名称

const [state, setState] = useState(0)
const [age, setAge] = useState(0)
const [count, setCount] = useState(0)

useState-处理表单元素

  1. 用useState初始化内容和修改内容的方法

  2. 向input元素上设置value和onChange属性

import React, { useState } from 'react'
import ReactDom from 'react-dom'
export default function App () {
  const [content, setContent] = useState('')
  return (
    <div>
      {content}
      <input value={content} onChange={(e) => setContent(e.target.value)} />
    </div>
  )
}
ReactDom.render(<App />, document.getElementById('root'))

useState-setXXX回调函数格式

useState 两种格式

格式1:传入值

useState(0) useState('abc')

格式2:传入回调

useState(() => { return 初始值 })

  1. 回调函数的返回值就是状态的当前值

  2. 回调函数只会触发一次

使用场景

格式1:传入值

如果状态就是一个普通的数据(比如,字符串、数字、数组等)都可以直接使用 useState(普通的数据)

格式2:传入回调

  1. 初始状态需要经过一些计算得到。 useState(()=>{这里有一些计算, return 结果}))

setXXX的参数可以是回调

状态需要迭代累计。 setXXXXX((上一次的值) => { return 新值 }) ?

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-12 19:30:07  更:2021-11-12 19:31:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:57:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码