- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
React路由中的redux和redux知识点拓展
目录路由中使用redux路由reducerRedux拓展state拓展action拓展静态action动态action异步action异步action中间件
路由中使用redux
在路由中使用redux只需要两步:
第一步在路由策略组件中(如HashRouter),渲染Route组件,并在该Route路由规则组件中,引入connect方法处理后的应用程序组件第二步在Provider组件中,渲染路由策略组件(如HashRouter)。
注意:路由规则渲染组件的时候,路由规则组件只负责向组件传递路由相关的数据,其他的数据(如store数据)是不会传递的
所以Route渲染的组件,想接收store中的数据,我们只能采用第二种方式,渲染处理后的组件。
路由reducer
路由也提供了reducer方法,我们需要引入react-router-redux
提供了routerReducer,表示路由的reducer
我们也想添加到应用中,我们就要使用combineReducers方法添加多个reducer
参数是对象:
key表示state名称(命名空间)
value表示reducer
相当于vuex中的module切割模块
此时合并后,在组件中,访问state数据,要携带命名空间
//拓展组件
letDealApp=dealFn(App);
letDealHome=dealFn(Home);
letDealList=dealFn(List);
letDealDetail=dealFn(Detail);
//第二步确定渲染方式
letroutes=(
HashRouter
{/*App/App*/}
{/*1通过路由规则,渲染处理后的应用程序*/}
Routepath=/component={DealApp}/Route
/HashRouter
//2在provider中,渲染路由规则
render(Providerstore={store}{routes}/Provider,app)
Redux拓展
state拓展
我们目前操作的state都是一个值类型的数据
因此我们可以直接操作这个state数据
如果state是一个引用类型的数据,我们就不能在state上直接操作了
我们要先定义新对象,在新对象上操作数据,最终与原来的state合并成新对象,并返回这个新对象作为新的state数据
我们可以通过ES6提供的Object.assign方法来合并对象,
由于后面的数据会覆盖前面的数据,因此我们将新对象放在state对象之后。
action拓展
action是一个通信的对象,里面携带消息数据
静态action
我们目前定义的action对象都是一个静态的action对象,
也就是说action中的数据是固定的
适用性会收到限制。为了提高适用性,我们可以定义动态action
动态action
动态action是一个函数,可以接收参数,我们根据参数的不同,返回不同的action,这样就增强了action对象的适用性了
异步action
到目前为止,我们所发送的action都是同步的,因为在action中没有异步的操作
异步action适用场景:
react是一个视图层的框架,但是我们有时候将请求放在组件中,就会让组件做了太多数据业务逻辑方面的事情了,有时候我们想将这部分请求放在action实现,此时这个action就是一个异步的action
异步action与同步action相比:
同步action(例如动态action),是一个函数,返回值是一个对象(就是发布的aciton对象)异步aciton,是一个函数,返回值是一个函数返回值函数中,参数是dispatch我们可以在返回值函数中,实现异步操作,并在操作完成的时候,通过参数dispatch发布同步的action消息。redux默认不支持异步,想使用异步action就要安装中间件
异步action中间件
redux-thunk是异步action中间件
我们可以通过applyMiddleware方法,将其安装在redux中,
该方法参数就是中间件,返回一个新的方法,用来拓展createState方法,会得到一个新的创建store方法,此时我们用这个新
文档评论(0)