hn-failte's blog hn-failte's blog
首页
  • 前端文章

    • JavaScript
    • Vue
    • React
    • Webpack
    • 混合开发
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《React》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
  • HTML&CSS
  • HTML
  • CSS
  • CSS预处理
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 算法
  • 数据库
  • 操作系统
  • 工具
  • 学习
  • 面试
  • 心情杂货
  • 前端相关
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

hn-failte

前端cv仔
首页
  • 前端文章

    • JavaScript
    • Vue
    • React
    • Webpack
    • 混合开发
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《React》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
  • HTML&CSS
  • HTML
  • CSS
  • CSS预处理
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 算法
  • 数据库
  • 操作系统
  • 工具
  • 学习
  • 面试
  • 心情杂货
  • 前端相关
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Webpack

  • React

    • React中context的用法
    • React中Hooks的使用
      • 函数组件
      • 传统函数组件的特点
      • Hooks的作用
        • 使用useState
        • 使用useEffect
      • 使用useContext
      • 其他API
    • React之immutable的使用
    • React性能优化
    • Redux的使用
    • 为什么项目不使用Redux
    • React配置Webpack开发环境
    • 谈谈Vue/React中的虚拟DOM(VDOM)与Key值
  • JavaScript

  • Vue

  • 混合开发

  • 学习笔记

  • 微信小程序

  • 前端
  • React
hn-failte
2019-02-15

React中Hooks的使用

# Hooks

React 16.8中新增了Hooks,再也不用写类组件,各种各样的this了

# 函数组件

函数组件,即表现为一个函数

导出的不是类,而是被函数替换

export default ()=>{
    return(
        <div></div>
    )
}
1
2
3
4
5

# 传统函数组件的特点

根据上方的代码,可以明显得知,函数组件可以减少代码

但是,传统函数组件具有以下局限性

  • 无生命周期

  • 无组件状态

# Hooks的作用

由于传统函数组件的特点,React引入了Hooks来使函数组件具有类组件的特性

# 使用useState

使用该方法能使函数组件具备初始值

import {useState} from "react"

let [count, setMyCount] = useState(10) //给count赋初值
setMyCount(20) //修改count
1
2
3
4

# 使用useEffect

使用该方法,可以使用componentDidMount、componentDidUpdate、componentWillUnmount生命周期

import { useEffect } from "react"

useEffect(()=>{ //等效于componentDidMount
    console.log("componentDidMount")
}, [])//参数二此时是一个不变的值

useEffect(()=>{ //等效于componentDidUpdate
    console.log("componentDidUpdate")
}) //参数二的数据未变化,不会执行更新生命周期,默认不写会变化

useEffect(()=>{
    return ()=>{ //等效于componentWillUnmount
        console.log("componentDidUnmount")
    }
}, []) //参数二此时是一个不变的值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 使用useContext

用于替换Consumer进行跨组件传值

globalContext.js

import {createContext} from "react"

export default createContext()
1
2
3

main.js

import React from "react";
import ReactDom from "react-dom";
import App from "./App";

import globalContext from "./globalContext"

ReactDom.render(
  <globalContext.Provider value={{name: "zs", age: 18, sex: "male"}}><App /></globalContext.Provider>,
  document.querySelector("#app"), () => {
  console.log("Mount Successful");
});

1
2
3
4
5
6
7
8
9
10
11
12

ComA.js

import React, {useContext} from "react"
import globalContext from "globalContext" //引入context文件

export default ()=>{
    let data = useContext(globalContext) //此时的globalContext包含Provider和Consumer
    return (
     	<p>{data.name}</p>
        <p>{data.age}</p>
    )
}
1
2
3
4
5
6
7
8
9
10

# 其他API

https://zh-hans.reactjs.org/docs/hooks-reference.html

编辑 (opens new window)
#H#o#o#k#s
上次更新: 2021/08/05, 12:37:41
React中context的用法
React之immutable的使用

← React中context的用法 React之immutable的使用→

最近更新
01
基于 Taro 的微信小程序优化指南
02-16
02
搭建一个极简混合开发架构
08-03
03
使用State Hook
04-06
更多文章>
Theme by Vdoing | Copyright © 2017-2023 hn-failte | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式