react动态监听state的值(React Context)

1.在utils建立一个新文件用来存储 globalContext.js

import React from 'react';
const GlobalContext = React.createContext();
export default GlobalContext;

2.在根组件APP.js中使用

import GlobalContext from './utils/globalContext';

<GlobalContext.Provider       
value={{ 
// 全局上下文组件(参考 react 生产者组件和消费者组件)       
 global: { ...this.state },        
 changeGlobalState: (state) => //这个函数用来写需要动态改变的值
 {  this.setState({ ...state }) },      
   </GlobalContext.Provider>

3.在需要传值的页面(传过去的那个页面)写更新函数

import GlobalContext from "../../../utils/globalContext";

 const context = useContext(GlobalContext);//这个必须写
 context.changeGlobalState({     
  RegionId:selectedOptions[len].key  
    }) //全局存RegionId,可以在任何页面取到

4.在需要动态改变state的页面监听Region的变化

 static contextType = GlobalContext//必写
componentWillReceiveProps(nextProps,nextContext){    
console.log(nextContext);   //所有的值都可以在这里面取
 const id=nextContext.global.RegionId   
  this.setState({     
RegionId:nextContext.global.RegionId   
 })   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值