比React—Redux和Redux好用100倍的原子级状态管理器,是我们公司自己封装的npm包,如果感兴趣可以研究研究,会大大提高开发效率
admin
2024-02-14 13:46:33
0

简介

react-store

一. 安装

在package.json的dependencies中引入

二. 配置

2.1 在store/index.ts中引入

2.3 在顶层通过StoreProvider注入状态

三. 使用

3.1 在函数组件中使用,借助useModel

3.2 在class组件中使用,借助connectModel

3.3 在组件外使用, 借助getModel

简介

大家都遭受rudex的毒打吧,基础掌握不好,会出现很多问题,然而React封装的React-Redux也没有好哪去呀!

我们公司使用的这个是自己上传的npm包,基于react-contextreact原子化状态管理器,具有完整的ts类型推测。

react-store

基于react-contextreact原子化状态管理器,具有完整的ts类型推测。使用方法及其简单!

一. 安装

package.json的dependencies中引入

  {"react-store": "https://h5-fc-code.oss-cn-hangzhou.aliyuncs.com/package/react-store/react-store-1.1.0.tgz"}

然后执行安装依赖操作

  npm i react-store -S

二. 配置

2.1 在store/index.ts中引入

import { useState } from 'react'
​
/** 1. 引入react-store */
import createStore from 'react-store'
​
/** 2. 定义各个原子化状态 */
// user
const userModel = () => {const [ userInfo, setUserInfo ] = useState<{ name: string }>({ name: 'name' })return { userInfo, setUserInfo }
}
​
// other
const otherModel = () => {const [ other, setOther ] = useState(20)return { other, setOther }
}
​
/** 3. 组合所有状态 */
const store = createStore(() => ({user: userModel(),other: otherModel(),
}))
​
/** 向外暴露useModel, StoreProvider, getModel, connectModel */
export const { useModel, StoreProvider, getModel, connectModel } = store

2.3 在顶层通过StoreProvider注入状态

// src/main.ts
import React from 'react'
import ReactDOM from 'react-dom'
import App from '@/App'
// 1. 引入StoreProvider
import { StoreProvider } from '@/store'
​
// 2. 使用StoreProvider包裹App组件
ReactDOM.render(,document.getElementById('root')
)

三. 使用

3.1 在函数组件中使用,借助useModel

import React from 'react'
import { useModel } from '@/store'
​
function FunctionDemo() {
​/** 通过useModel取出user状态 */const { userInfo, setUserInfo } = useModel('user')
​/** 在点击事件中调用setUserInfo改变状态 */const onChangeUser = () => {setUserInfo({name: userInfo.name + '1',})}
​// 展示userInfo.namereturn ()
}
​
export default FunctionDemo

3.2 在class组件中使用,借助connectModel

import React, { Component } from 'react'
import { connectModel } from '@/store'
​
// 定义class组件props
interface IClassDemoProps {setOther: React.Dispatch>other: numbernum: number
}
​
class ClassDemo extends Component {
​// 通过this.props获取到方法修改状态onChange = () => {this.props.setOther(this.props.other + 1)}
​render() {console.log(this.props.num)// 通过this.props获取到状态进行展示return }
}
​
// 通过高阶组件connectModel把other状态中的属性和方法注入到类组件中
export default connectModel('other',state => ({other: state.other,setOther: state.setOther
}))(ClassDemo)

3.3 在组件外使用, 借助getModel

import { getModel } from '@/store'
​
export const onChangeUser = () => {// 通过getModel读取user状态,进行操作const user = getModel('user')user.setUserInfo({name: user.userInfo.name + '1'})
}
​
// 1秒后执行onChangeUser方法
setTimeout(onChangeUser, 1000)

大家可以测试下真的很好用,一个子爽!

相关内容

热门资讯

50万亿天量存款到期,银行理财... 来源:21世纪经济报道 “三年前存的三年期定存,年利率还有3%以上,现在到期后再存,利息直接少了一半...
全年35场特色活动!老字号嘉年... 1月26日,商务部联合广东省人民政府举办的全国老字号嘉年华暨大湾区年味消费季启动仪式在广州市荔湾区陈...
日媒:“日美协同干预”传闻致日... 参考消息网1月27日报道 据《日本经济新闻》网站1月26日报道,在周一(26日)的外汇市场上,日元汇...
凯德北京投资基金管理有限公司:... 全球存储芯片巨头美光科技本周一宣布,其位于新加坡现有制造园区内的全新先进晶圆制造厂已正式破土动工。这...
欠钱不还,还动手打人,这名国企... 这件事太让人意想不到,也太不可思议。 欠债还钱,天经地义。但凡懂得一点道理的,都知道这句话的含义,也...
超20家银行科技条线“掌舵者”... 近年来,数字化转型已成为银行高质量发展的核心引擎。作为科技条线的“掌舵者”,首席信息官(CIO)不仅...
武汉病毒所发现尼帕有效药物!生... 今日(1.27),生物疫苗题材回调,生物医药ETF汇添富(159839)收跌2.08%,成交额保持高...
金价飙新高,A股炒贵金属板块自... 最近刷财经新闻,估计不少兄弟都被金价飙涨的消息炸到了——国际金价突破5100美元/盎司,创历史新高,...
侃股:重罚操纵股价,投资者持股... 自然人余韩因操纵博士眼镜股价,被证监会罚没金额合计超过10亿元,并同时被采取三年证券市场禁入措施及三...
小红书“拿下”沃尔玛,开始大批... 编辑 | 文定 当商超巨头沃尔玛遇上生活方式社区小红书,一场线上内容与线下零售的深度融合就此开启。双...
华北制药股份有限公司关于公司获... 来源:上海证券报 证券代码:600812 股票简称:华北制药 编号:临2026-004 华北制药股...
MiniMax创上市新高,市值... 来源:格隆汇APP 格隆汇1月27日|港股市场AI概念股临近尾盘集体走强,其中,MINIMAX-WP...
追觅是下一个乐视?CEO回应:... 做新能源汽车、做高端智能手机、做酒旅品牌、做航空服务…… 追觅近期不断曝出跨界开拓新业务,甚至其C...
马斯克力推太空光伏,为何看上的... 界面新闻实习记者 | 肖一凡 1月22日,马斯克在达沃斯论坛上宣布,SpaceX和特斯拉计划三年内...
1月27日连板股分析:连板股晋... 【1月27日连板股分析:连板股晋级率33% 贵金属板块分歧加剧】今日共53股涨停,连板股总数14只,...
腾讯、淡马锡等基石投资者认购1... 中国最大的休闲食品饮料连锁零售商鸣鸣很忙(01768)将于1月28日(星期三)在香港挂牌。截至发稿,...
【朝医新闻】建科即攀峰 骨肿瘤... 2025年12月1日,北京朝阳医院骨与软组织肿瘤诊疗中心(以下简称骨肿瘤中心)正式建科。建科伊始,团...
追觅CEO俞浩回应“断指计划”... 1月27日,追觅科技创始人兼CEO俞浩回应“断指计划”传闻:没有,谣传。 俞浩称,刚入职的员工,工资...
整治政府采购领域“内卷式”竞争... 为整治政府采购领域“内卷式”竞争 财政部近日发出通知 就推动解决政府采购异常低价问题 提出明确要求 ...