首页 > 其他分享 >react 状态管理

react 状态管理

时间:2023-08-16 10:34:13浏览次数:30  
标签:状态 const 管理 age dispatch react state StoreContent import

srore
index.tsx
import React from 'react';
// 仓库文件桶
import StoreContent from './StoreContent';
import SetDataBtn from './SetDataBtn';
import ShowDataBox from './ShowDataBox';

function Index() {
  return (
    <>
      <StoreContent>
        <SetDataBtn></SetDataBtn>
        <ShowDataBox></ShowDataBox>
      </StoreContent>
    </>
  );
}

export default Index;

  

SetDataBtn.tsx
// An highlighted block

import { useReactContentFun } from './StoreContent';

const  SetDataBtn=()=> {
  const [state, dispatch]= useReactContentFun();
  return (
    <div>
      <button
        onClick={() => {
          dispatch({ type: 'name', name: 'jsonYc' });
        }}
      >
        设置名字
      </button>
      <button
        onClick={() => {
          dispatch({ type: 'age', age: Number(state.age) + 1 });
        }}
      >
        年龄+1
      </button>
      <button
        onClick={() => {
          dispatch({ type: 'age', age: Number(state.age) - 1 });
        }}
      >
        年龄-1
      </button>
      <button
        onClick={() => {
          dispatch({ type: 'sex', sex: state.sex == '女' ? '男' : '女' });
        }}
      >
        性别
      </button>
    </div>
  );
}

export default SetDataBtn;

  

ShowDataBox.tsx

// An highlighted block

import { useReactContentFun } from './StoreContent';

function ShowDataBox() {
  const [state, dispatch] = useReactContentFun();

  return (
    <>
      <div>
        <p>名称:{state.name}</p>
        <p>年龄:{state.age}</p>
        <p>性别:{state.sex}</p>
      </div>
    </>
  );
}

export default ShowDataBox;

  

StoreContent.tsx
import React, { useReducer, useContext } from 'react';
const ReactContent = React.createContext({});
function StoreContent({ children }: any) {
  function reducer(state: any, action: any = {}) {
    let returnObj = {
      ...state,
      [action.type]: action[action.type]
    };
    console.log(122222, returnObj);
    return returnObj;
  }

  const storeObj = {
    name: 'yc',
    age: 20,
    sex: '男'
  };

  const [state, dispatch] = useReducer(reducer, storeObj);
  //制作一个仓库桶 来装需要用到context的组件
  return <ReactContent.Provider value={[state, dispatch]}>{children}</ReactContent.Provider>;
}

export function useReactContentFun():any {
  return useContext(ReactContent);
}

export default StoreContent;

  

标签:状态,const,管理,age,dispatch,react,state,StoreContent,import
From: https://www.cnblogs.com/zjxzhj/p/17633316.html

相关文章

  • ThingsKit物联网平台消息管理
    概述平台消息配置管理是针对平台的通知方式进行管理,例如:邮件通知、短信通知、钉钉通知等配置。功能详解消息记录平台消息发送记录,例如:告警信息发送记录。消息记录消息配置消息类型的具体参数配置,如:短信配置、邮件配置、钉钉配置等等。消息配置消息模板ThingsKit物联网平......
  • 交换机带外管理和带内管理的区别,中小规模园区网如何选择?
    交换机的带外管理是什么?在带外管理模式中,网络的管理控制信息与用户网络的承载业务信息在不同的逻辑信道传送。带外管理最大的优势在于,当网络出现故障中断时数据传输和管理都可以正常进行——不同的物理通道传送管理控制信息和数据信息,两者完全独立,互不影响。并且,带外管理可以实现远......
  • ThingsKit物联网平台消息记录管理
    短信发送和邮件发送记录用户配置消息模板和消息配置后所有发送的邮件和短信的汇总,可点击查看详细信息。:::info......
  • 基于JAVA的大学生志愿管理系统
    随着国民志愿服务领域水平的逐渐提高,大学生志愿管理系统已渐渐成为人们大学生志愿服务的一部分。互联网的普及给人们带来的转变不需多说。因此如果把大学生志愿管理系统与互联网结合起来,利用java技术建设大学生志愿管理系统,实现大学生志愿管理系统的网络化。则对于进一步提高国民志......
  • 基于JAVA的社区团购管理系统
    社区团购管理系统是为社区团长提供的在线订单管理系统,本系统的研发设计能够增加社区团长的团购宣传和推广,提升客流量和订单量,增加团长的营业收益。原有的团购系统管理采用手工管理的方式,各种团购宣传和订单接收都采用纸质宣传和电话接单处理,这种管理手段在短期的宣传结束之后,可以方......
  • 基于ASP.NET小微企业人力资源管理系统
    现如今,现代信息技术高速发展,人们的生活和工作方式都发生了巨大转变。现在越来越多的流行网上小微企业人力资源管理,网上小微企业人力资源管理使工作更方便快捷。人力资源管理领域也同样与我们生活息息相关,发生了重大的转变。越来越多的希望自己无论在什么时间、什么地点都可以自主小......
  • ThingsKit物联网平台设备管理之设备状态
    平台新添加设备后,设备所显示状态。:::info......
  • ThingsKit物联网平台设备管理之设备凭证
    AccessToken设备普通访问凭证,可自定义和随机刷新。设备凭证具有唯一性,不可重复。X.509在一些对通信安全要求严格的物联网领域,比如智能门锁、电表、水表、燃气表等,您可以使用基于X.509TLS的MQTT安全认证方式。更进一步的物联网安全措施,可以在设备端集成SE安全芯片,或使用内置S......
  • ThingsKit物联网平台产品管理之设备类型
    直连设备直连设备可以直接发布订阅数据。v1/devices/me/telemetry网关设备网关设备等同于直连设备。v1/devices/me/telemetry网关子设备在使用网关MQTT协议时,需要先在ThingsKit平台上为网关和网关子设备绑定关系。对于MQTT网关子设备而言,上报上来的遥测数据,系统会自动创......
  • ThingsKit物联网平台产品管理之Topic说明
    概述Topic是消息发布(Pub)者和订阅(Sub)者之间的传输中介。设备可通过Topic实现消息的发送和接收,从而实现服务端与设备端的通信。为方便海量设备基于Topic进行通信,简化授权操作,物联网平台定义了设备Topic。常用Topic汇总功能设备类型发布主题订阅主题平台设备遥测属性......