当前位置: 首页 > news >正文

react useContext 用法

1 创建createContext

import React, { useContext, useEffect, useState } from 'react'

const GlobalContext = React.createContext()

GlobalContext 作为提供者

export default function App(){

  const [filmList,setfilmList] = useState([]);

  const [info,setinfo] = useState('');

  useEffect(()=>{

    return()=>{

      axios.get(`/maizuo.json`).then(res=>{

        setfilmList(res.data)

      })

    }

  },[])

  return (

//GlobalContext 作为提供者

    <GlobalContext.Provider value={{

      call:'打电话',

      sms:'短信服务',

      info:info,

      changeInfo:(value)=>{

        setinfo(value)

      }

    }}>

      <div>

        {

          filmList.map(item=>

            <FilmItem key={item.filmId} {...item}></FilmItem>

          )

        }

        <FileDetail></FileDetail>

      </div>

    </GlobalContext.Provider>

  )

}

3 通过 useContext(GlobalContext) 可以直接只用提供者属性和方法

function FilmItem(props){

  let { name, poster, grade,synopsis } = props;

  const value = useContext(GlobalContext)

  console.log(value,'--------123')

  return <div onClick={()=>{

//使用提供者方法

    value.changeInfo(synopsis)

   }}>

    <h4>{name} </h4>

    <div style={{display:'flex',alignItems:'center'}}>

     

      <div>观众评分: {grade} </div>

      <img src={poster} style={{width:'50px',height:'50px;',marginLeft:'10px'}} alt='alt'></img>

    </div>

  </div>

}

function FileDetail(){

  const value = useContext(GlobalContext);

  return <div className='filedetail'>

//使用提供者属性

  detail=== { value.call } == { value.info }

</div>

}

相关文章:

  • HP笔记本电脑如何恢复出厂设置?这里提供几种方法
  • 桥接模式(Bridge Pattern)
  • QT GUI编程常用控件学习
  • cesium相机视角跳转和缩放至entity方法汇总
  • redis的限流器都有哪些方式
  • 【kubernetes】关于k8s集群的声明式管理资源
  • 4核8G服务器并发数多少?性能如何?
  • MySQL-七种SQL优化
  • Spring篇----第十一篇
  • Java面试——锁
  • Vue 3, TypeScript 和 Element UI Plus:前端开发的高级技巧与最佳实践
  • 数据分析之数据预处理、分许建模、可视化
  • MacOS开发环境搭建详解
  • spring boot集成redis
  • 备战蓝桥杯————k个一组反转单链表
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • interface和setter,getter
  • JavaScript创建对象的四种方式
  • java中具有继承关系的类及其对象初始化顺序
  • jdbc就是这么简单
  • js数组之filter
  • orm2 中文文档 3.1 模型属性
  • redis学习笔记(三):列表、集合、有序集合
  • Spring-boot 启动时碰到的错误
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 简单数学运算程序(不定期更新)
  • 讲清楚之javascript作用域
  • 区块链将重新定义世界
  • 如何利用MongoDB打造TOP榜小程序
  • 推荐一个React的管理后台框架
  • gunicorn工作原理
  • Spring第一个helloWorld
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​比特币大跌的 2 个原因
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • $GOPATH/go.mod exists but should not goland
  • (003)SlickEdit Unity的补全
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (七)Java对象在Hibernate持久化层的状态
  • (三)c52学习之旅-点亮LED灯
  • (算法)Travel Information Center
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)iOS字体
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转载)PyTorch代码规范最佳实践和样式指南
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .libPaths()设置包加载目录
  • .Net mvc总结
  • .net 按比例显示图片的缩略图
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET命令行(CLI)常用命令
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48