Redux Toolkit——基操
redux-toolkit是redux的升级版
安装
npm install @reduxjs/toolkit
// 在react中还需要搭配react-redux使用
npm install react-redux
模块的写法
// counterReducer.ts
import { createSlice, payloadAction } from '@reduxjs/tookit'
export const counterSlice = createSlice({
name: 'counter',
initialState: {
num: 0
},
reducers: { // 类似vuex的commit;reducers,reducers,reducers,不是reducer
// 写法类似vuex的commit,第一个参数默认是state,第二个是自己传的参数,
// payloadAction是内置用于ts情况下类型校验的,把参数包裹起来
increment(state, value: payloadAction<number>) {
state.num += value
}
}
})
// 导出
export const { increment } = counterSlice.action
export default counterSlice.reducer
创建仓库
// stroe/index.ts
import { configureStore } from '@reduxjs/tookit'
// 创建仓库configureStore
const store = configureStore({
// 模块,类似vuex的module
reducer: {
counter: counterReducer
}
})
// 导出
export type RootState = ReturnType<typeof store.getState> // 这两个是为ts定义类型用的
export type AppDispatch = typeof store.dispatch
// 这个重要
export default store
通过react-redux在组件中使用redux
1. 首先要在react应用的根组件provider
// index.jsx
import store from './store'
import { Provider } from 'react-redux'
root.render(
<React.strictMode>
<Provider store={store}>
<App />
</Provider>
</React.strictMode>
)
2. 然后才能在组件中使用
// 这两个是react用个来使用/操作redux的
import { useSelector, useDispatc } from 'react-redux'
import { increment } from '@/store/couterReducer'
export default function App() {
const num = useSelector((state: RootState) => state.counter.num)
const dispatch = useDispatch()
return (
<>
<p>{num}</p>
<button onClick={() => {
dispatch(increment()) //这就是触发reducer更改store的方法
}}> increment </button>
</>
)
}
Redux Toolkit——基操的更多相关文章
- Mongodb3.6 基操命令(二)——如何使用help
前言 在上一篇文章Mongodb3.6 快速入门(一)中,我们主要使用两个命令: 1.mongod #启动服务 2.mongo #连接mongodb 对于刚接触mongo的人来说,该怎么给命令传递参数 ...
- mysql基操
创建数据表: create table tt1( id int, name varchar(20), age int,sex boolean ); insert into tt1 values(1,& ...
- Redis的基操
redis:通常BOLEAN操作类型,操作成功返回1,操作失败返回0 通常如果往设置的key插入值,但是这个key不存在,redis则会创建 向redis里的某个key插入多个值时,值和值之间用空格隔 ...
- Redis基操
Redis key-value类型的缓存数据库 指定IP和端口连接redis: ./redis-cli -h ip -p port Redis基本操作命令 命令 返回值 简介 ping PONG 测试 ...
- MongoDB基操
基本概念 database 数据库 包含多个collection collection 集合 包含多个文档document(类JSON对象) document 文档 一个文档对象中包含多个key-va ...
- JavaScript之基操
局部变量前面要加var 如 var name = "jiahuai" 全局变量 name = "jiahuai" 写完每一行JavaScript代码用;号隔 ...
- MySql的基操勿六
2018/12/6 星期四 19:34:07 authot by dabaine 数据库注释; -- 这就是注释 /*.....*/ 这也是注释 创建库; create databse [if not ...
- 小白学 Python 爬虫(19):Xpath 基操
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- nodejs的一些基操
Nodejs 是基于 CHrome V8 引擎的 JaveScriptnpm: node 包管理器为我们提供了: nodejs 运行时,javascript 代码运行时的环境 提供了核心模块,具体会在 ...
- typroa 和markdown基操
目录 标题 一级标题 二级标题 字体 图片 来插入图片,如在同意文件夹上,可直接加图片名 数学公式 编辑表格 标题 一级标题 二级标题 三级标题 无序标题 *加空格,无序标题 也可以使用ctrl = ...
随机推荐
- 使用idea的maven项目使用mybatis时遇到的坑
在使用idea的maven项目中使用mybatis时遇到的一个问题,这个问题困扰了我一段时间,所以我来这里记录一下! 出现的问题是: 我把相同的代码复制到eclipse中,在eclipse中却能正常运 ...
- 【SDOI2015】星际战争
#include<cstdio> #include<queue> using namespace std; const int M = 10000; const double ...
- JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫
题目大意 对于 \(m = [1,\lfloor \frac n 2 \rfloor]\) 要求在一个序列中恰好选出 \(m\) 个不相邻的数使得权值和最大 其中 \(1\) 的左边是 \(n\),\ ...
- Os-Hax
Os-Hax 目录 Os-Hax 1 信息收集 1.1 端口扫描 1.2 后台目录扫描 1.2.1 目录分析 2 反弹Shell 3 提权 3.1 尝试提权 3.2 收集当前系统信息 3.3 利用su ...
- windows pwn(一)
前言 前几天因为看CS shellcode装了一个win10虚拟机,然后正好因为逆向课老师要装一系列工具.于是就想起来之前一直想看的windows pwn,就顺便装了一下相关工具并且入门了一下. 工具 ...
- 代码随想录-day2
哈希表 基础知识 哈希表和链表都是属于基础数据结构的一种,都是必须掌握牢靠的知识. 哈希表是根据关键码的值而直接进行访问的数据结构. 简单来说就是使用数据得到的哈希值来作为哈希表的key用于获取数据. ...
- 《HelloTester》第2期
1.前言 饭前喝汤:如果你的月薪低于1万,不要总想着"新机会",而更加重要的是"练手艺".当你有了一定的手艺可以施展,机会自然存在! 读了之前的简历篇,我想你对 ...
- 子路由path路径带 ‘/‘与不带
子路由不带 / : $router.push('/layout/home') 浏览器地址栏显示: http:xxxxxxxxxx/layout/home 带 / : $router.push('/us ...
- org.elasticsearch.ElasticsearchException: not all primary shards of [.geoip_databases] index are active解决办法
解决办法 在配置elasticsearch.yml中加上 ingest.geoip.downloader.enabled: false
- cuda+pytorch环境安装
本机cuda版本为v11.5 conda install cudatoolkit 使用 CUDA 11.3版本的配置 conda install pytorch==1.11.0 torchvision ...