首页 > 其他分享 >react 之 useContext

react 之 useContext

时间:2024-09-27 10:14:20浏览次数:7  
标签:Provider provider react useContext 使用 组件

useContext

概念:useContext 创建上下文,主要是解决组件跨级通信、传值

示例:

步骤1、使用 creatContext 方法创建一个 context 实例对象(通常在组件树的顶层)

import React from 'react';

const MyContext = React.createContext(defaultValue);

备注:这里的 defaultValue 是当组件上层没有匹配的 Provider 时,context 的默认值。

步骤2:使用 Provider 提供值(在组件树中用 Provider 包裹住它的子组件,子组件都能收到provider提供的值)

<MyContext.Provider value={count:1}>
  <Child/>
</MyContext.Provider>

备注:provider 所传的值可以是任何数据类型,且当Provider 的 value 发生变化时,所有使用该 Context 的后代组件都会重新渲染

步骤3:子组件里 使用useContext 访问 provider 传的值

import React, { useContext } from 'react';

function Child() {
  const contextValue = useContext(MyContext);
  return <div>{contextValue}</div>;
}

OK,整个useContext使用步骤基本完成

注意:useContext 不是可以无脑滥用,上面说到 useContext 所传的值变化,下面的所有组件都会重新渲染,这样如果嵌套曾经深、组件复杂的情况下会造成很大的性能开销

解决方案:

1、合理是使用场景:不需要频繁更新的组件使用

2、使用useMemo/useCallBack 等做性能优化

 

标签:Provider,provider,react,useContext,使用,组件
From: https://www.cnblogs.com/xxflz/p/18435141

相关文章

  • 类组件中的 React Hook
    介绍在某些情况下,我们假设您必须在基于react类的组件中使用reacthook概念。但是正如你所知,如果你想在基于类的组件中直接使用它们,反应钩子只能在功能组件中工作。它将出现错误。那么如何做呢,有一个解决方案。有3步解决方案创建自定义hook,(你可以直接使用hook,但不会获得更多好......
  • 编写更好的 React 代码:干净、高效的实践指南
    随着react的不断发展,开发人员必须不断更新最佳实践,以增强代码的可读性、可维护性和性能。本指南概述了2024年编写更清洁、更高效的react应用程序时要遵循的关键实践,包括react19中引入的最新更改。1.使用功能组件和钩子带有钩子的功能组件是构建react应用程序的标......
  • 掌握 React 中的 useImperativeHandle(使用 TypeScript)
    使用typescript构建react应用程序时,开发人员经常遇到需要创建具有高级功能的自定义、可重用组件的场景。本文将探讨两个强大的概念:用于对引用管理进行细粒度控制的useimperativehandle挂钩,以及创建表单验证和模态组件等自定义组件。我们将深入探讨:useimperativehandle钩子:......
  • 掌握 React:提出伟大问题的艺术
    掌握React:提出伟大问题的艺术作为一名React开发人员,你可以培养的最有价值的技能之一就是提出好问题的能力。你不需要了解React的一切才能发挥作用,但你确实需要知道如何深思熟虑地处理问题。这项技能是优秀工程师与伟大工程师的区别。可视化:React组件树将您的React应......
  • 掌握 React Router Hooks:综合指南
    reactrouter是在react应用程序中处理导航的重要库。随着reactrouterv6中引入hooks,管理路由变得更加直观和强大。在这篇博文中,我们将探索五个关键的reactrouter钩子,它们可以提升你的路由游戏。1.usenavigate():轻松编程导航usenavigate钩子提供了一个函数,可以通......
  • 使用duxapp开发 React Native App 事半功倍
    Taro的ReactNative端开发提供了两种开发方式,一种是将壳和代码分离,一种是将壳和代码合并在一起开发壳是用来打包调试版或者发版安装包使用的代码是运行在壳上的js代码Taro壳子的代码仓库https://github.com/NervJS/taro-native-shellduxapp中更进一步,你不需要太关注壳子什么......
  • setup配置;ref与reactive
    setup配置Vue3中的setup函数接收两个参数,分别是props和context。1、props:值为对象,包含:组件外部传递过来。切组件内部声明接收了的属性。需要注意的是,Vue3中的props是只读的,即在setup函数中不能修改props的值。如果需要修改传递过来的数据,可以使用响应式对象或ref。2、......
  • 深入理解 JSX:构建 React 用户界面的利器
    目录一、JSX介绍1.JSX概念2.为什么使用JSX,JSX有什么好处?二、JSX基本语法1.基本元素: 2.嵌套元素:3.组件:4.属性: 5.表达式6.条件渲染:7.样式:三、JSX语法规则四、JSX编译过程五、JSX小案例1.待办事项列表2.计时器应用六、总结一、JSX介绍1.JSX概念    ......
  • react-router-dom嵌套路由实践
    想要通过react-router-dom实现类似vue的router-view的嵌套路由效果,在点击导航菜单时切换页面,官方文档是真的没找到相关内容,现做个总结:在createBrowserRouter的配置中配置给目标路由配置子路由;在目标组件的相应位置添加一个<Outlet/>作为子路由的组件渲染容器(Outlet组件类似vue......
  • 豆包MarsCode初体验,用 React 创建一个最经典的贪吃蛇游戏
    以下是「 豆包MarsCode 体验官」优秀文章,作者Find。背景在人工智能快速发展的时代,大模型(LLM)只要有足够的算力和数据就可以做到任何的事情,甚至可以模拟出另一个地球。LLM作为一个革命化的科技,可以取代很多岗位,甚至可以让人类达到“躺着领钱的时代”。Marscode作为一个新推出的IDE......