这篇文章给大家分享的是有关redux是不是必须搭配react的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
redux不是必须搭配react的,除了支持React外还支持其他的UI框架;而且redux并不是适合所有项目所有应用的;在react中,能不用redux就不用redux。
redux是一个JavaScript状态容器,主要提供状态管理。可以运行于服务端,客户端,原生应用。除了支持React外还支持其他的UI框架,体积小,只有2kb。当要与React一起使用的时候,可以使用react-redux插件来进一步提升我们的开发体验。
在开始今天的主题前,有几个点我需要强调一下
react的state和redux的state根本是完全不沾边的两个东西,切记不要混为一谈。react的state是存在于类组件中的一个存放自身变量的属性,redux的state整个应用的store中的某一个namespace下的状态。二者没有任何关系。
redux是一个独立于react的,你可以选择使用也可以选择不适用,如果您不是使用的基于redux的脚手架,那么想使用redux您是需要单独引用的。react包中并没有redux。
假如您的应用中要使用redux,您是需要将react和redux关联起来的,这里有一个包叫react-redux,是用来关联react和redux的,其中有一个高阶函数叫connect,它接受两个方法,mapStateToProps和mapDispatchToProps是这两个方法将redux的state注入到了react的props中。
上面是带大家回顾redux的一些基本知识点,接下来我们进入主题。
redux的使用场景
如果您的React应用中状态十分多,难以维护的时候,这个时候redux是个不错的选择。(这里所说的状态就是react的state)
如果您需要数据共享,即多个react组件需要用同一个数据源。
如果您需要一些全局性的状态控制,比如应用中的当前登录人,我们说不定会在哪个组件中使用登录人信息,如果我们将它注册到全局redux中,那么我们就无需关系哪个组件要用了,我们用的时候直接从全局redux中取就行
某组件的业务逻辑过于复杂,在react组件中处理这些数据太过繁琐,我们可以考虑将部分逻辑拆分到redux中。
使用redux可以将数据和UI分离开,如果您为了实现这样的效果,您可以尝试使用redux.
我们为什么要减少redux的使用
看过阮一峰大哥博客的同学一定看到过这几句话
如果你不知道是否需要 Redux,那就是不需要它。
只有遇到 React 实在解决不了的问题,你才需要 Redux 。
所以redux并不是适合所有项目所有应用的。
使用redux需要创建很多模板代码,会让state的更新变得十分复杂,这一点谁用谁知道,哈哈。
使用过多的redux会让应用失去灵活性
Redux 带来了函数式编程、不可变性思想等等,为了配合这些理念,开发者必须要写很多“模式代码(boilerplate)”,繁琐以及重复是开发者不愿意容忍的。当然也有很多 hack 旨在减少 boilerplate,但目前阶段,可以说 Redux 天生就附着繁琐;
使用 Redux,那么你的应用就要用 objects 或者 arrays 描述状态;OMG!
使用 Redux,那么你的应用就要使用 plain objects 即 actions ,来描述变化;OMG!
使用 Redux,那么你的应用就要使用纯函数去处理变化;OMG!
应用中,状态很多都要抽象到 store,那么何时使用 local states 何时接入 Redux store?不能痛痛快快地写业务,一个变化就要对应编写 action(action creator),reducer 等等;
和响应式结合函数式的 Mobx 相比,编程体验“打折扣”
以上是引用了网友的一段话,可见redux的过多使用时存在很多弊端的,我这里就不一一罗列他的弊端了。感兴趣的同学可以去自己搜一下,总是,我认为能不用redux就不用redux
读到这里,我想解决了一些读者心中的疑问“我们什么时候用react的state什么时候用redux的state?”答案就很明确了。
redux毕竟是一个比较成功的框架,其中的数据流也是很经典,解决了不少难题,任何东西都有利弊,我们只要做好权衡,相信我们可以写出更加优秀的应用。
感谢各位的阅读!关于redux是不是必须搭配react就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。