REACT-Redux,异步SAGA以及THUNK的小理解

天道无情人间有情,2020年的开端作为小白 逆流而上,战在学习上,希望有照一日小白‘’板‘’也能成为菜鸟

对Redux的理解


它是一个仓库,里面存放着初始数据,然后这个数据可以各个组件进行调用,以及在当前组件下进行修改,而不影响到这个初始数据;还有就是单独使用传值,值只是传给了Hoc这个高阶组件,所以它是需要<Com {…this.props} /> 调用组件里面的三个方法,但是这个调用方法是通过Hoc来实现的,这种应该是叫属性代理;

还有一种就是
反向继承:通过你使用高阶组件,把参数传递回来进行判断,通过判断语句进行反向操作

它有三种方法可以实现数据传参:

  1. 通过sessionStorage传值
  2. 通过state传值
  3. store仓库传值
  4. 修改数据

Redux介绍:
状态管理工具 npm I redux –s
三大原则:
单一数据源
State是只读的
使用纯函数来执行修改

ComponentDidUpdata(只能监听组件里面的数据改变,监听不了仓库store的数据变化)

Store

  1. getState() 获取状态
  2. dispatch({type,playload})抛发动作给reducer
  3. subscribe监听store里的数据变化

三种重要操作:
存数据;
取数据;
改数据: 组件里 store.dispatch(action(actionCreator)) ---->reducer(type,action)
—>复本,修改,返回–》组件里通过store.getState() 取最新的值(subscribe)

单向数据流:

组件里 store.dispatch(action(actionCreator)) ---->reducer(type,action)
—>复本,修改,返回–》组件里通过store.getState() 取最新的值(subscribe)

分模块:
UI组件(只负责渲染)
容器组件(和store打交道)

1) store.dispatch(动作)
action 是一定含有type的一个对象 ,通过去人type 调用action进行修改
2) 动作发给了 reducer 第二个参数 action
action 一定有type ,还可能接收一些其他参数
3) 根据type修改数据
a. 做 state 的复本
b. 修改state的复本对象
c. 返回新的state
2) store
store getState dispatch({type:‘XXX’,key:value…})
3) action对象的type值 千万不要重复
var reducer = (state = initState,action)=>{
// if(action.type === “REC”){
// // var newState ={…state}; //做复本 浅拷贝
// // newState.path=action.path; //修改值
// // return newState; //返回新状态
// return {…state,path:action.path};
// }
// return state

关于THUNK以及SAGA的一些理解

共同点:都是通过组件传入props获取数据列表进行渲染,使用fetch必须有then()
Redux-thunk:redux的中间件,可以处理简单的异步数据渲染,但是操作步骤比较复杂因为在组件里面一次性写好了获取的方法,有时候复杂的话会看不懂:在这里插入图片描述

在这里插入图片描述

Thunk可以直接在动作文件里面直接写好获取地址:在这里插入图片描述

Redux-saga

:redux的中间件,可以处理复杂的异步数据渲染,但是操作步骤比较简单,不过需要额外插入saga:
*

fetch*:

接收地址 then(res)获取里面的数据 返回res。json这个数据,
然后再添加到type里面,渲染时候type相同就可以执行该数据了,

yield

:跟return功能类似,但又不一样;是ES6新增,选择性操作的意思,
相当于先执行第一个yield后,如果有next()这个代码,就执行下一个yield,无就不执行下一个yield
在这里插入图片描述

在STORE里面:
在这里插入图片描述
在SAGA.js里面:
在这里插入图片描述
在type动作状态里面:
在这里插入图片描述

takeEvery
takeEvery就像一个流水线的洗碗工,过来一个脏盘子就直接执行后面的洗碗函数,一旦你请了这个洗碗工他会一直执行这个工作,不会停止接盘子的监听过程和触发洗盘子函数

只要有个type相同即可通过渲染数据

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: React-saga和React-thunk都是用于处理异步操作的中间件。 React-thunk是Redux官方推荐的中间件之一,它允许我们在Redux中编写异步操作,使得我们可以在Redux中处理异步操作,而不需要在组件中处理异步操作。Thunk是一个函数,它接收dispatch和getState作为参数,并返回一个函数,这个函数接收dispatch作为参数,并在异步操作完成后调用dispatch。 React-saga是另一个处理异步操作的中间件,它使用了ES6的Generator函数来处理异步操作。Saga使用了一种称为Effect的概念,它是一个简单的JavaScript对象,用于描述异步操作。Saga使用了一种称为yield的语法,它允许我们在Generator函数中暂停异步操作,并在异步操作完成后继续执行。 总的来说,React-thunk和React-saga都是用于处理异步操作的中间件,它们的实现方式不同,但都可以让我们在Redux中处理异步操作。选择哪种中间件取决于个人的喜好和项目的需求。 ### 回答2: React-Saga和React-Thunk都是React应用中用于处理异步操作的中间件。它们的主要目的是在Redux应用中,帮助我们管理异步操作。这两个中间件都可以让React应用更加的灵活、健壮和易于维护。 React-Saga的核心理念是利用生成器函数来处理异步操作,Saga通过使用生成器来让异步操作变得像同步操作一样,其中每个异步操作都会被转化为一个迭代器函数,这些函数可以被Saga调用和暂停。 Saga主要有以下几个特点: 1. Saga可以使异步操作更加同步和简单,让异步调用变得更容易。Saga使用了轻量级、高效的生成器函数,从而有效地减少了异步调用中的代码复杂度。 2. Saga可以很好地管理和协调多个异步操作。Saga可以在任意阶段暂停异步操作,等待其他异步操作完成之后再继续执行。 3. Saga可以捕获和控制异步操作的错误、超时和状态。当出现问题时,Saga可以修复错误或者更改异步操作的状态,保证应用程序的稳定性和可靠性。 React-Thunk的核心概念是利用闭包函数来处理异步操作,Thunk将异步操作转化为一个闭包函数,然后通过回调函数将其传递到Redux的异步流中。 Thunk的主要特点有以下几个: 1. Thunk可以轻松处理异步操作,没有复杂的代码逻辑或者概念。 2. Thunk主要使用了闭包函数来捕捉当前异步操作的上下文,使得处理异步操作更加的简单、方便和自然。 3. Thunk可以轻松控制异步操作的状态、结果和错误处理,保证应用程序的稳定性和可靠性。 总之,React-Saga和React-Thunk都是帮助我们管理和处理应用程序的异步操作的中间件。它们都有自己独特的实现方式和特点。我们可以根据自己的项目需求和开发团队的技能水平来选择适合我们的中间件。 ### 回答3: React-saga 和 React-thunk 都是针对 React 应用中异步操作的中间件。它们两个都可以用来控制异步流程,使得我们可以更好的管理 React 应用程序中异步操作的数据和状态。 相较于 react-thunk, react-saga 是一个更加强大的中间件,它基于 generator 函数的概念,可以用来控制非常复杂的异步流程,使得我们可以在操作时更加精细地掌控多个异步操作的执行顺序和状态。 如果说 react-thunk 的核心概念是将异步操作封装进一个函数里,而在需要时调用这个函数即可,那么 redux-saga 的核心概念则是分离出一个独立的 Generator 函数来代表所有的异步业务逻辑。 redux-saga 可以让你从另一个角度处理异步流程,使你能够同步处理异步操作,不同的 Saga 可以用一种集中且易于理解的方式组合起来,组成它们自己的执行序列。 总而言之,React-saga和React-thunk 都是 React 应用程序开发中非常实用的工具,对于管理异步操作和数据状态非常有帮助。但是针对不同的开发需求,我们需要选择相应的中间件,来实现我们最好的业务逻辑。所以我们在使用的时候需要根据实际情况选择适合的中间件进行操作,以达到最好的效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值