Redux 到底解决了哪些问题

#1

最近换工作,参加了几场面试,由于自学的react时间不长,被问到redux到底解决哪些问题,答不出来。找了一些资料看,还是没想出答案。有大神针对这个问题讲讲自己理解吗

#2
  1. 跨页面数据共享问题,如多页面购物车数据
  2. 子组件通信问题
#3

也比较难说清楚解决什么问题了, 成为流行类库之后被加入了各种功能.

早先没有 Redux 的时候, 主要是 Facebook 的 Flux, 以及社区有很多自己语法糖的方案.

基于 Flux 有一些问题, Flux 当中通常有多个 Store, 分别监听比较麻烦, 跨 Store 操作还有同步顺序, 挺烦的. 然后 Redux 出来了, 首先是很配合作者之前的 react-hot-loader 做热替换, 因为 Store 变成了一个, 概念上明确了很多. 然后提供了一些方案可以将数据注入到深度嵌套的组件当中, 不需要一层一层重复传递回掉函数. 加上有个 middleware 的抽象, 加了一堆我看着挺邪乎的功能…就有点看不懂了.

#4

组件通信、跨组件数据储存

1 Like
#5

redux解决了两方面: 一是redux采用了类flux架构,将中大型react应用程序中的数据流动管理变得更简单 二是redux提升了react的开发体验,时间旅行很方便开发者去回溯数据

#6

这个问题困扰了很多年了,从15年就开始学习,一直没搞懂redux到底解决什么问题,为什么要用它,我觉得它好烦啊,怎么就那么难懂了.今年都20年了,我又回过头来再看redux,结果还是没看懂,那么多层层叠叠多东西又必要吗?
如果要解决跨页面共享问题, 定一个LocalStorage不就好了吗,
如果要解决子组件通信问题,定一个全局变量,再定一个监听不就好了吗?为什么一定要弄那么多复杂多api,太复杂了吧,想吐槽很久了.
到底还要做什么非他不可?

#7

状态可回溯,组件可以订阅部分关心的数据做渲染,中间件系统可以扩展额外的能力(如 reslect 计算缓存)

不过到了2020年了,更推荐了解下concent

0入侵接入,无感知使用,内置依赖收集,无负担提高渲染性能。
https://juejin.im/post/5eda2a0ef265da76fa4b6c03

import { run, register, useConcent } from "concent";

run({
  counter: {// 声明一个counter模块
    state: { num: 1 }, // 定义状态
  }
});

@register("counter")
class ClsComp extends React.Component {
  changeNum = () => this.setState({ num: 10 })
  render() {
    return (
      <div>
        <h1>class comp: {this.state.num}</h1>
        <button onClick={this.changeNum}>changeNum</button>
      </div>
    );
  }
}

function FnComp() {
  const { state, setState } = useConcent("counter");
  const changeNum = () => setState({ num: 20 });
  
  return (
    <div>
      <h1>fn comp: {state.num}</h1>
      <button onClick={changeNum}>changeNum</button>
    </div>
  );
}

还见过比它更简单的数据流方案吗:grinning:
在线示例 https://codesandbox.io/s/rvc-demo2-vg3uh?file=/src/index.js