IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> React redux的基本用法 -> 正文阅读

[JavaScript知识库]React redux的基本用法

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。可以让你构建一致化的应用,运行于不同的环境(客户端、服务器、原生应用),并且易于测试。不仅于此,它还提供 超爽的开发体验,比如有一个时间旅行调试器可以编辑后实时预览。

Redux基本用法

一、Redux的npm下载

npm install --save redux
注意:不是全局安装,要安装在具体项目

二、引入Redux具体内容

在官方提供的react脚手架src目录中创建一个文件夹store
在这里插入图片描述
在store文件夹中创建三个文件,分别是index.js,reducer.js,state.js,分别代表的是引入模块,reducer操作函数和state数据。

1、首先打开index.js,(确保redux已经下载成功了),复制以下代码引入目录,并将store抛出。

import { createStore } from "redux";
import reducer from "./reducer";
import state from "./state"

const store = createStore(reducer,state)

export default store

2、打开state.js文件,建立一个空对象,并将state抛出。

const state = {
    //数据装入区
}

export default state

3、打开reducer.js文件,建议一个空函数,并将reducer抛出

const reducer = (state,action)=>{

   //函数操作数据区

    return state
}
export default reducer;

到这里,我们前期的准备工作就基本完成了,下面说一下具体的操作

三、Redux在组件内的的具体操作

我这里有一个简易版todolist的小案例,点击Edite是弹出框编辑本条,点击del是删除本条,最终效果如下图所示
在这里插入图片描述
学过Vuex的小伙伴应该都知道$store.state吧,在组件内调取store内部的数据的方法,同样redux跟vuex其实差不多是一个东西,都是状态管理,所以,简单介绍一下在react的组件中调取和操作store中的数据的方法

 * store对象
 *      store.getState()  获取store中的state数据
 *      store.dispatch(action) 向store中reducer派发新的action对象
 *      store.subscribe(()=>{}) 监听store数据的变化

1、首先要在组件中引入store

import store from './store'

2、直接在组件中这样写就可以拿到store state中的数据

render(){
	return(
		{store.getState."在state中定义的键名"}
	)
}

不过我们并不推荐这么写,因为这样每次组件都会去请求store,会浪费性能,所以我们采取下面这个方法:

constructor(){
        super()

        //获取store中的state数据,并且将数据赋值给当前组件的状态
        this.state = store.getState()

        //监听store的变化
        store.subscribe(()=>{
            this.setState(store.getState())
        })
    }

前面介绍到的redux在组件内的方法,监听也是放在constructor中是最好的,获取到值立马开始监控。

3、添加一个点击提交的回车事件(这里暂时只看onKeyUp)
在这里插入图片描述
然后我们写一个回车事件Submit

Submit = ()=>{
        return (e)=>{
            if(e.keyCode === 13){
                let action = {
                    type:"submit_input",
                    value:this.state.inputVal
                }
                store.dispatch(action)
            }
            }
    }

可以观察到,

let action = {
                    type:"submit_input",
                    value:this.state.inputVal
                }
                store.dispatch(action)

这里就是传递action的地方,就是在这里将组件内定义好的action传递到reducer函数中的,

type:type参数必须要有,这是reducer判断你要干什么事所必需的
value:这是自定义的参数名,从这里开始,你可以定义很多参数名去传递数据
store.dispatch(action) :这是将action抛给reducer函数的方法

四、Redux在store内reduce操作函数的方法

以刚刚的回车事件提交函数为例,在store.dispatch将action抛给reducer函数后,先if判断一下传过来的type是什么,为什么这么做?因为在一个reducer函数中,可以传递很多 “if(type??){}” 进来,这样判断后reducer才能知道你传递的action到底是给哪个if用的。

为了不影响原本的数据和外部数据,先设置一个变量tempstate深复制原本的state数据,然后将tempstate抛出去赋值给state就大功告成了

const reducer = (state,action)=>{
    //这是提交输入框的数据
    if(action.type === 'submit_input'){
        let tempstate = JSON.parse(JSON.stringify(state));
        tempstate.inputValue = action.value;
        tempstate.list.push(action.value)
        // console.log(tempstate)
        tempstate.inputValue = ""
        return tempstate;
    }

    return state
}
export default reducer;
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-30 12:39:12  更:2021-07-30 12:41:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 17:16:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码