我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ReactuseContext与useReducer函数组件使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ReactuseContext与useReducer函数组件使用

useContext

介绍

与class中写法对比减少了代码量,省去了返回回调函数获取传来的值

使用


 import React, { useState, useRef, useContext } from 'react';
 const GlobalContext=React.createContext()//创建Context对象
function FilmItem(){
    const value=useContext(GlobalContext)
    console.log(value)//可以拿到传过来的value
        return(
                <div>
                    <span>{value.name}CSDN碰磕</span>
                </div>
             )
}
 export default function MyContext() {
    return (
        //供应商
        <GlobalContext.Provider value={{
            name:"碰磕",
            age:18
        }}>
        <div>
            Context方案
            <FilmItem></FilmItem>
        </div>
        </GlobalContext.Provider>
    );
 }

通过**useContext(GlobalContext)**就可以获取到传来值

useReducer

介绍

将多个state放到对象中,进行统一管理

使用(简单示例实现计算器)


 import React, {useReducer } from 'react';
 //处理函数
 const reducer=(pervState,action)=>{    //第一个参数是原数据,第二个参数是传来的数据
    let newarr={...pervState};//定义新对象拷贝
    switch(action.type){
        case "pengke-jian":
            newarr.count--
            return newarr        
        case "pengke-jia":
            newarr.count++
            return newarr
        default:
            return pervState   
    }
 }
 //外部的对象
 const intialState={
     count:0,
 }
 export default function MyReducer() {
    const [state,dispatch]=useReducer(reducer,intialState)
    return (
        <div>
            <button onClick={()=>{
                dispatch({
                    type:"pengke-jian"
                })
            }}>-</button>
            <span>{state.count}</span>
            <button onClick={()=>{
                dispatch({
                    type:"pengke-jia"
                })
            }}>+</button>
        </div>   
    )
 }

将useContext与useReducer整合

实现多个组件通过他们俩互相通信传值…


 import React, {useContext, useReducer } from 'react';
 const intialState={
     num1:"666",
     num2:"碰磕"
 }
 const reducer=(state,action)=>{
    let newarr={...state};
    switch(action.msg){
        case "change-num1":
            newarr.num1=action.value
            return newarr
        case "change-num2":
            newarr.num2=action.value
            return newarr
        default:
            return newarr
    }
 }
 const GlobalContext = React.createContext();
 export default function MyReducer2() {
    const [state,dispatch]=useReducer(reducer,intialState)
    return (
        <GlobalContext.Provider value={
            {
                state,dispatch
            }
        }>
        <div>
           <Children1 />
           <Children2 />
           <Children3 />
        </div>   
        </GlobalContext.Provider>
    )
 }
function Children1(){
    const {dispatch}=useContext(GlobalContext)//这里传值
    return <div style={{background:"red"}}>
        <button onClick={()=>{
            dispatch({
                msg:"change-num1",
                value:"被我修改了num1哈哈哈"
            })
        }}>改变值1</button>
        <button onClick={()=>{
            dispatch({
                msg:"change-num2",
                value:"被我修改了num2哈哈哈"
            })
        }}>改变值2</button>
    </div>
}
function Children2(){
    const {state}=useContext(GlobalContext)//拿到值
    return <div style={{background:"orange"}}>Children2---{state.num1}</div>
}
function Children3(){
    const {state}=useContext(GlobalContext)//拿到值
    return <div style={{background:"skyblue"}}>Children3---{state.num2}</div>
}

到此这篇关于React useContext与useReducer函数组件使用的文章就介绍到这了,更多相关React useContext与useReducer内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ReactuseContext与useReducer函数组件使用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ReactuseContext与useReducer函数组件使用

useContext和useReducer可以用来减少层级使用,useContext,可以理解为供货商提供一个公共的共享值,然后下面的消费者去接受共享值,只有一个供货商,而有多个消费者,可以达到共享的状态改变的目的
2023-02-06

React组件useReducer的讲解与使用

在React函数式组件中,我们可以通过useState()来创建state,这种state创建方式会给我们返回两个东西state和setState()。
2023-05-16

React函数组件与类组件怎么使用

这篇“React函数组件与类组件怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“React函数组件与类组件怎么使用”文
2023-06-30

Vue组件的渲染函数与JSX使用场景

在Vue.js中,渲染函数和JSX是两种用于定义组件模板的语法。渲染函数提供灵活性和调试便捷性,而JSX拥有良好的可读性和内置扩展支持。适合动态且高度可定制的组件选择渲染函数,而简单且静态的组件则适合JSX。选择标准包括性能优先、灵活性、可读性、内置扩展需求和社区支持。通过理解它们的优点和缺点,开发者可以做出明智选择,创建高效且可维护的Vue.js组件。
Vue组件的渲染函数与JSX使用场景
2024-04-02

React函数式组件与类组件的不同点是什么

本文小编为大家详细介绍“React函数式组件与类组件的不同点是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“React函数式组件与类组件的不同点是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。区别区别函
2023-06-29

C语言如何使用数组指针与函数指针

这篇文章主要为大家展示了“C语言如何使用数组指针与函数指针”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言如何使用数组指针与函数指针”这篇文章吧。函数指针语法定义一个函数指针,并通过函数指针
2023-06-29

React函数组件与类的区别有哪些

函数式组件的基本意义就是,组件实际上是一个函数,不是类,下面这篇文章主要给大家介绍了关于React中函数组件与类的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2022-11-13

Vue动态组件与异步组件怎么使用

这篇“Vue动态组件与异步组件怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue动态组件与异步组件怎么使用”文章吧
2023-07-05

PHP中如何使用数组函数

PHP中如何使用数组函数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.array_multisort()对多个数组或多维数组进行排序可以用来一次对多个数组进行排序或者根据某
2023-06-17

如何使用 PHP 的数组函数?

php 数组函数提供各种操作,包括添加、删除、搜索、合并和转换元素。它们简化了数据操作,提高了代码效率。例如,array_push() 添加元素到末尾,array_pop() 删除最后一个元素,array_unshift() 在开头添加元素
如何使用 PHP 的数组函数?
2024-04-20

JavaScript组合函数怎么使用

这篇文章主要讲解了“JavaScript组合函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript组合函数怎么使用”吧!如果没有组合函数 compose,函数连续调用
2023-07-02

编程热搜

目录