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基础 => useContext === -> 正文阅读

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

useContext步骤

共3步:

1. 导入并调用createContext方法,得到Context对象,导出

import { createContext } from 'react'
export const Context = createContext()

2. 使用 Provider 组件包裹根组件,并通过 value 属性提供要共享的数据

return (
? <Context.Provider value={ 这里放要传递的数据 }>
? ?? ?<根组件的内容/>
? </Provider>
)

3. 在任意后代组件中,如果希望获取公共数据: ?

导入useContext;调用useContext(第一步中导出的context) 得到value的值

import React, { useContext } from 'react'
import { Context } from './index'
const 函数组件 = () => {
    const 公共数据 = useContext(Context)
    return ( 函数组件的内容 )
}

示例

?

index.js

// 1.导入createContext方法
import { useState, createContext } from 'react'
import reactDom from 'react-dom'
import Parent from './Parent'

// 2. 调用createContext方法,得到Context对象,导出
export const Context = createContext()

export default function App () {
  const [color, setColor] = useState('red')

  return (
  // 3. 使用 **Provider** 组件**包裹根组件**,并通过 **value** 属性提供要共享的数据
        <Context.Provider value={color}>
            <div style={{ border: '1px solid #000' }}>
                根组件color:{color}
                <button onClick={() => { setColor('green') }}>点击更改颜色为green</button>
            <Parent></Parent>
            </div>
        </Context.Provider>
  )
}

reactDom.render(<App></App>, document.querySelector('#root'))

?parent.js

import Son from './Son'

export default function Parent () {
  return (
        <div style={{ border: '1px solid #ccc', margin: 10 }}>
            父组件
            <Son></Son>
        </div>
  )
}

Son.js

// 4.导入useContext
import { useContext } from 'react'

// 5.调用useContext(第一步中导出的context)
import { Context } from './index'

export default function Son () {
  // 6. 得到value的值
  const color = useContext(Context)
  console.log(color)

  return (
        <div style={{ border: '1px solid #ccc', margin: 10 }}>
            子组件coler:{color}
        </div>
  )
}

点击按钮后

拓展-使用 ESLint 插件帮助检查 Hooks 的使用

使用 Hooks 的一些特性和要遵循的规则,那么应用到日常的开发中,就必须时刻注意不能写错。

包括这么三点:

  • 在 useEffect 的回调函数中使用的变量,都必须在依赖项中声明;

  • Hooks 不能出现在条件语句或者循环中,也不能出现在 return 之后;

  • Hooks 只能在函数组件或者自定义 Hooks 中使用。

React 官方为我们提供了一个 ESLint 的插件,专门用来检查 Hooks 是否正确被使用,它就是 eslint-plugin-react-hooks 。通过这个插件,如果发现缺少依赖项定义这样违反规则的情况,就会报一个错误提示(类似于语法错误的提示),方便进行修改,从而避免 Hooks 的错误使用。 ?

使用步骤

?

使用步骤

  1. 安装这个插件:npm install eslint-plugin-react-hooks -D

  2. 修改:ESLint 配置文件。

    加入两个规则:rules-of-hooks 和 exhaustive-deps。如下:

{
  "plugins": [
    // ...
    "react-hooks"
  ],
  "rules": {
    // ...
    // 检查 Hooks 的使用规则
    "react-hooks/rules-of-hooks": "error", 
    // 检查依赖项的声明
    "react-hooks/exhaustive-deps": "warn"
  }
}

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:32:45  更:2021-11-14 21:33:54 
 
开发: 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年5日历 -2024/5/10 10:39:38-

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