【React Hooks 学习笔记】useContext

简介: 前端西瓜哥

大家好,我是前端西瓜哥。今天简单说说 React Hooks 的 useContext。

useContext 用于获取 React 的 Context 对象。

const value = useContext(MyContext);

React 的 Context 指的是组件上下文的意思,用于简化子组件跨多层中间组件和上层组件的通信问题。

如果用 props 一个个往下传,直接人传晕了。而且要是以后中间组件又套多了几个,又要补上对应 props,也不利于组件的通用化。

比如你需要子组件可以修改上层组件的状态,传入了一个 setState 方法,此时 Context 是非常不错的方案。

useContext() 会拿到离它最近的 Context.Provider,即拿到向上最近的 <MyContext.Provider value={myValue}>)的 value。如果找不到,则会使用 createContext 时传入的默认值。

下面我们不妨看个例子。

import React, { createContext, useContext, useState } from 'react'
const CounterContext = createContext(() => { console.log('默认值') });
function Counter() {
  const [count, setCount] = useState(0);
  return (
    <CounterContext.Provider value={setCount}>
      <div>
        <div>count { count }</div>
        <A />
      </div>
    </CounterContext.Provider>
  )
}
function A() {
  const setCount = useContext(CounterContext); // 拿到 Counter 下的 setCount
  return (
    <div>
      <button onClick={() => { setCount(pre => pre + 1) }}>加一</button>
    </div>
  )
}

还是一个定时器,但这次我们将 count 状态的更新方法提供给它的子组件。这里为了更专注于核心逻辑,所以故意写简单点,只有一个子组件。

我们先通过 createContext 创建一个 Context,并提供一个默认函数。

我们的 A 组件,找到的最近的 provider 是位于 Counter 组件下的 setCount 更新函数,然后 A 组件就成功通过这个方法更新了 Counter 组件的状态。

如果你把 <CounterContext.Provider />  组件移除,你会发现点击 A 组件下的按钮后,只会在控制台输出 “默认值”,因为 A 组件找不到 Provider,使用了默认函数。

默认函数很少会用到,起一个兜底的作用。

相关文章
|
21天前
|
前端开发 JavaScript
React Hooks 全面解析
【10月更文挑战第11天】React Hooks 是 React 16.8 引入的新特性,允许在函数组件中使用状态和其他 React 特性,简化了状态管理和生命周期管理。本文从基础概念入手,详细介绍了 `useState` 和 `useEffect` 的用法,探讨了常见问题和易错点,并提供了代码示例。通过学习本文,你将更好地理解和使用 Hooks,提升开发效率。
53 4
|
23天前
|
前端开发
深入解析React Hooks:构建高效且可维护的前端应用
本文将带你走进React Hooks的世界,探索这一革新特性如何改变我们构建React组件的方式。通过分析Hooks的核心概念、使用方法和最佳实践,文章旨在帮助你充分利用Hooks来提高开发效率,编写更简洁、更可维护的前端代码。我们将通过实际代码示例,深入了解useState、useEffect等常用Hooks的内部工作原理,并探讨如何自定义Hooks以复用逻辑。
|
28天前
|
前端开发 JavaScript API
探索React Hooks:前端开发的革命性工具
【10月更文挑战第5天】探索React Hooks:前端开发的革命性工具
|
27天前
|
XML 前端开发 JavaScript
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
这篇文章是React的学习笔记,覆盖了从React的基础用法到高级特性,包括组件化、状态管理、生命周期、虚拟DOM等主题,适合React初学者参考。
71 0
react学习笔记一:入门级小白到脚手架(create-react-app)开发项目
|
8天前
|
前端开发 JavaScript 开发者
“揭秘React Hooks的神秘面纱:如何掌握这些改变游戏规则的超能力以打造无敌前端应用”
【10月更文挑战第25天】React Hooks 自 2018 年推出以来,已成为 React 功能组件的重要组成部分。本文全面解析了 React Hooks 的核心概念,包括 `useState` 和 `useEffect` 的使用方法,并提供了最佳实践,如避免过度使用 Hooks、保持 Hooks 调用顺序一致、使用 `useReducer` 管理复杂状态逻辑、自定义 Hooks 封装复用逻辑等,帮助开发者更高效地使用 Hooks,构建健壮且易于维护的 React 应用。
21 2
|
13天前
|
前端开发 开发者
React 提供的其他重要 Hooks
【10月更文挑战第20天】React 提供了一系列强大的 Hooks,除了 `useRef` 之外,还有许多其他重要的 Hooks,它们共同构成了函数式组件开发的基础。
29 6
|
21天前
|
前端开发 JavaScript 开发者
React Hooks
10月更文挑战第13天
31 1
|
27天前
|
前端开发
|
26天前
|
前端开发 JavaScript API
自定义React Hooks综合指南
本文介绍了React Hooks及其在组件开发中的作用,重点讲解了自定义Hook的创建和使用方法。通过实例展示了如何创建`useWindowWidth`、`useFetch`和`useForm`等自定义Hook,并分享了使用自定义Hook的最佳实践。文章强调了自定义Hook在提高代码复用性和组件可维护性方面的重要性。
40 0
|
26天前
|
存储 前端开发 JavaScript
深入理解React组件的生命周期与Hooks
【10月更文挑战第7天】深入理解React组件的生命周期与Hooks
66 0