Rumah > hujung hadapan web > tutorial js > redux必须搭配react吗

redux必须搭配react吗

藏色散人
Lepaskan: 2020-12-22 09:24:11
asal
1852 orang telah melayarinya

redux不是必须搭配react的,除了支持React外还支持其他的UI框架;而且redux并不是适合所有项目所有应用的;在react中,能不用redux就不用redux。

redux必须搭配react吗

推荐:《react视频教程

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毕竟是一个比较成功的框架,其中的数据流也是很经典,解决了不少难题,任何东西都有利弊,我们只要做好权衡,相信我们可以写出更加优秀的应用。

Atas ialah kandungan terperinci redux必须搭配react吗. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan