简单练习react-redux

1.建议安装yarn
平常创建项目是使用yarn,因为yarn创建项目第一次之后都会有缓存。
如果是安装包,建议使用npm的镜像cnpm下载。
2.react-router和react-router-dom
react-router是路由的基本操作库
react-router-dom是路由基本操作库上封装的组件库
一般使用react-router-dom
一般使用的库有:router ,switch,Link
3.redux和react-redux
redux是redux的基础核心
react-redux是针对react的状态管理
使用react的话使用react-redux就行

建议:在安装包的时候,安装在-S中,在提示之后安装一些类型依赖到开发环境中-D

再使用react-redux时也需要安装redux:
一.用react-redux包裹住在需要使用地方的根组件
在这里插入图片描述

在根组件的页面引入Provider,用Provider来包裹根组件,Provide 需要传入一个值。这个值就是store,在使用这个值时,是使用{}包含key。
那么问题来了,store哪里来的?
二.因为目前是不存在store这个东西的,我们需要创建一个,在src目录下创建redux目录,现在就需要使用我们的redux了,在redux下创建store.ts:
在这里插入图片描述

首先我们需要导入redux中的createStore这个组件来创建我们的store,另外需要导入的就是我们创建store所需要使用的消息源了,下面使用创建store引用createStore来创建,最后记得导出哦。
三.创建完store之后,就是我们的数据源了
首先在我们的redux下创建一个student目录,首先在student下创建一个reduer.ts文件,我们先不急着用这个文件,先在src下创建一个papges文件夹,在papges下创建home.tsx文件,这个文件就是我们要使用react-redux数据,
在这里插入图片描述

在Home里导入react-redux中的{useDispatch,useSelector}的组件,
useSelector是用来来引入数据,
useDispatch是用来修改数据的,
导入后就是在组件中使用吧:
const hero = useSelector((state:类型)=>state)里面的参数是一个回调函数,hero就是我们需要的数据,
const dispatch = useDispatch()这个函数呢是我们要修改的数据所使用的函数
这里我们就可用先放下了。
现在就是我们去完善我们的数据源:现在回到reduer.ts
在这里插入图片描述

第一步创建我们数据的类型接口,我们创建有一个id,name,email三个字段的数据,定义我们的接口看上图使用interface关键字来创建接口,创建完接口后我们就可以来看我们的组件怎么写了,在创建函数中:
const reducer = (state = defaultValue,action:any) => {return state}
这里有一个参数state的默认值,现在我们就回到我们的接口下去创建这个默认值
const defaultValue:我们的所创建的接口 = {这里面就是我们的默认值(记得类型需要于接口保持一直哦)}
到这里我们的基础已经完成了。
现在我们可以回到Home页面
在这里插入图片描述

在前面我们已经创建了一个hero了,现在我们在使用hero和改变hero,
在div中我们引入hero的name,id,email三条属性,然后创建一个按钮,这个按钮中去使用dispatch这个函数来去修改hero,dispatch传入的是一个对象,
现在我们可以回到reduer.ts下了
在这里插入图片描述

一个简单switch判断,现在的action就刚才我们创建的数据了,
判断我们action.type的值是什么,action是一个对象,在Home页面我们给了action的值,如果action.type的值是string则执行return里面的代码。
五.但是在我们写代码时,不同的程序员所写的代码可能千奇百怪,造成的可维护性极低,那么这是我们就需要定义一个action模板来创建这个对象,就不会造成不同人写出不同对象的问题,那么我们就来创建action.ts吧
首先在student下创建action.ts,因为是给student下的reduer来设计模板:
在这里插入图片描述

第一步创建我们的参数,这里是运用ts中的变量类型自动判定,当代码没有运行到这里时,这三个参数都是字符串类型,
对这三个参数定义三个接口,与这三个接口相互对应的就是我们之间所创建的数据对象字段了,创建完三个接口我们可以把三个接口类型打包成一个HeroActionType,记得导出,后续我们会用到。类型定义完成之后就是我们的工程定义函数了,根据上面三个接口来创建三个工厂函数,记得工厂函数全部导出。
完成这个配置,之后我们再回到student下的reduer.ts
在这里插入图片描述

导入之前我们打包的类型,还记得我们之前为什么定义action吗?现在我们就把这个类型赋值给action:
在这里插入图片描述

当赋值完之后之前我们写的就会报错,这是为什么呢,先别急我们可以来看一下提示,再仔细看一下我们的这个判断,之前我们的action是any属性所有没有保存,现在我们给action定义了一个属性,那么action.type这个值还有用吗?
这里不急我们再回到Home页面
在这里插入图片描述

首先我们要把我们定义的工厂函数导入到这里,然后再使用dispatch的时候去直接可以使用工厂函数
在这里插入图片描述

调用工厂函数进行修改,这就使用方法,然后我们还需要回到student下的reduer.ts里:
在这里插入图片描述

我们可以看看实际效果:
在这里插入图片描述

然后点击按钮:
在这里插入图片描述

好了现在我们就已经完成了react-redux简单的练习使用,本人也是新手上路的小白,如有问题可以一起讨论。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React-Redux是一个结合了React和Redux的库,它使得在React应用中集成状态管理变得更加容易。Redux是一个单一来源的状态管理库,而React-Redux提供了一组工具来帮助你将Redux的状态管理与React组件结合起来。 安装React-Redux的步骤通常是这样的: 1. 首先,确保你已经安装了Node.js和npm(Node包管理器)。 2. 在你的项目目录中,打开终端或命令提示符。 3. 使用npm或yarn来安装`react-redux`和`redux`库。如果你还没有安装`redux`,可以先安装: ```bash npm install redux ``` 或者使用yarn: ```bash yarn add redux ``` 4. 安装`react-redux`: ```bash npm install react-redux ``` 或者: ```bash yarn add react-redux ``` 5. 引入到你的项目中。通常会创建一个store来保存全局状态,以及将store连接到React组件上: ```javascript // 在index.js或App.js中 import { createStore } from 'redux'; import rootReducer from './reducers'; // 根 reducer,合并所有模块的reducer const store = createStore(rootReducer); // 如果你在使用react-redux,还需要引入Provider组件: import { Provider } from 'react-redux'; import App from './App'; // 你的React应用组件 function Root() { return ( <Provider store={store}> <App /> </Provider> ); } ReactDOM.render(<Root />, document.getElementById('root')); ``` 6. 在React组件中,使用`connect`函数从store中提取数据并处理dispatch动作: ```javascript import { useSelector, useDispatch } from 'react-redux'; function MyComponent() { const myState = useSelector(state => state.mySlice); // 选择store中的状态 const dispatch = useDispatch(); // 获取dispatch方法 // 在组件内部使用state和dispatch // ... } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值