React Hook之useContext

这篇具有很好参考价值的文章主要介绍了React Hook之useContext。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 什么是useContext

React官方解释:useContext 是一个 React Hook,可以让你读取和订阅组件中的 context(React官方文档地址)。

通俗的讲,useContext的作用就是:实现组件间的状态共享,主要应用场景是跨组件状态共享。

2. useContext语法及使用方法

useContext语法

const value = useContext(someContext)
someContext:上下文对象,使用其Provider属性可以给后代组件传递状态信息。

使用方法和步骤
第一步:创建上下文对象,用来存储需要共享的状态和方法

// 在项目目录中创建一个ThemeContext.js
import React from 'react';
const ThemeContext = React.createContext();
export default ThemeContext;

第二步:让祖先组件具备自己的状态和方法,同时把这些信息存储到上下文对象中。
基于上下文对象中提供的Provider组件,向上下文中存储信息: value 属性指定的值就是要存储的信息(是一个对象)。

// 祖先组件
import { useState } from "react";
import Son from './Son';
import ThemeContext from '../ThemeContext';

const Father = () => {
  const [num, setNum] = useState(0);

  const change = () => {
      setNum(num + 1);
  }
  return <ThemeContext.Provider
    value={{
      num,
      change
    }}
  >
    <>
      <Son />
    </>
  </ThemeContext.Provider>
}

export default Father;

// 子组件
import GrandSon from './GrandSon'

const Son = () => {

  return <>
    <GrandSon />
  </>
}

export default Son;

// 孙组件
const GrandSon = () => {
  return <></>
}

export default GrandSon;

第三步:在后代组件中,使用useContext Hook函数,useContext(ThemeContext),获取上下文中存储的信息

// 孙组件
import { useContext, useEffect } from 'react';
import ThemeContext from '../ThemeContext';

const GrandSon = () => {
  const context = useContext(ThemeContext);

  useEffect(() => {
    console.log('我是孙组件', context)
  }, [])
  return <></>
}

export default GrandSon;

孙组件(后代组件)获取的context信息如下:
React Hook之useContext,React,useContext,Hook,Hook函数,React,React Hook,跨组件通信
这样就实现了跨组件通信啦!文章来源地址https://www.toymoban.com/news/detail-699812.html

到了这里,关于React Hook之useContext的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • react Hook+antd封装一个优雅的弹窗组件

    前言 在之前学vue2的时候封装过一个全局的弹窗组件,可以全局任意地方通过this调用,这次大创项目是用react技术栈,看了一下项目需求,突然发现弹窗还是比较多的,主要分为基础的弹窗以及form表单式的弹窗,如果只是无脑的去写代码,那些项目也没啥必要了。正好react和

    2024年02月13日
    浏览(41)
  • React Hook - useEffecfa函数的使用细节详解

    useEffecf基本使用 书接上文, 上一篇文章我们讲解了State Hook, 我们已经可以通过这个hook在函数式组件中定义state 我们知道在类组件中是可以有生命周期函数的, 那么如何在函数组件中定义类似于生命周期这些函数呢? Effect Hook 可以让你来完成一些类似于class中生命周期的功能; 事

    2023年04月12日
    浏览(35)
  • 【《React Hooks实战》——指导你使用hook开发性能优秀可复用性高的React组件】

    使用React Hooks后,你很快就会发现,代码变得更具有组织性且更易于维护。React Hooks是旨在为用户提供跨组件的重用功能和共享功能的JavaScript函数。利用React Hooks, 可以将组件分成多个函数、管理状态和副作用,并且不必声明类即可调用React内置的功能。而且,上述所有的操作

    2024年02月14日
    浏览(35)
  • 前端react入门day04-useEffect与Hook函数

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 useEffect 的使用 useEffect 的概念理解 useEffect 依赖项参数说明 useEffect — 清除副作用 自定义Hook实现 React Hooks使用规则 useEffect是一个React Hook函数,用于在React组件中 创建不

    2024年01月22日
    浏览(55)
  • React 应用 Effect Hook 函数式中操作生命周期

    React Hook入门小案例 在函数式组件中使用state响应式数据给大家演示了最简单的 Hook操作 那么 我们继续 首先 Hook官方介绍 他没有破坏性是完全可选的 百分比兼容 也就说 我们一起的 类 class的方式也完全可以用 只要 react 16,8以上就可以使用 Hook本身不会影响你的react的理解 恰恰

    2024年02月09日
    浏览(47)
  • React Hooks useContext 传参数

    1、封装 context.js 文件,如下图:  2、父级组件引入 context.js 文件,并用Provider包裹子组件,值通过 value 传递,如下图:  3、子组件引入 context.js 文件,并通过 useContext 取到对应的值或方法, 如下图: 个人小结,不喜勿喷。

    2024年01月20日
    浏览(27)
  • 4.react useContext使用与常见问题

    2024年02月11日
    浏览(52)
  • 关于在微信小程序中使用taro + react-hook后销毁函数无法执行的问题

    问题: 在 taro中使用navigageTo() 跳转路由后hook中useEffect 的return函数没有执行 没有执行return函数 框架版本:      tarojs:  3.6                            react:   18.0    原因: 使用navigateTo() 跳转路由的话并不会销毁页面和组件,会加入一个最大数量为十层的路由

    2024年01月24日
    浏览(45)
  • 20230529----重返学习-复合组件通信redux-redux源码-redux工程化开发-自定义hook

    要想实现复合组件通信,一般采用公共状态管理方案。 常见的公共状态管理方案: 官方推荐的:redux。 redux + react-redux + redux-logger / redux-promise / redux-saga / redux-thunk :中间件。 代表:dva「redux-saga 」或 umi。 @reduxjs/toolkit :工具类。 mobx 。 zustand 。 … redux的应用场景 redux 在以

    2024年02月06日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包