redux 还原、React还原、还原形实感之间的区别是什么?

kqhtkvqz  于 2023-03-08  发布在  React
关注(0)|答案(6)|浏览(234)

我正在使用React + Flux。我们的团队计划从Flux转移到Redux。Redux对于来自Flux世界的我来说非常混乱。在Flux中,控制流程是简单的,从组件-〉操作-〉存储和存储更新回组件。它简单而非常清楚。
但是在redux中,它让人困惑。这里没有存储,是的,有一些例子没有使用存储。我看了几个教程,似乎每个人都有自己的实现风格。有些人使用容器,有些人没有。(我不知道这个容器的概念,也不能理解mapStateToProps,mapDispatchToProps做什么)。
1.有人能清楚地解释一下redux中的控制流是如何发生的吗?

  1. redux中组件/容器/动作/动作创建者/存储的角色是什么?
  2. redux/react-redux/redux-thunk/任何其他类型之间的区别?
    1.如果你能发布任何简单而精确的redux教程的链接,这将是非常有帮助的。
x6yk4ghg

x6yk4ghg1#

1.有人能清楚地解释一下redux中的控制流是如何发生的吗?
Redux(总是)有一个单一的商店。
1.无论何时要替换存储中的状态,都可以调度一个操作。
1.该动作由一个或多个还原器捕获。

  1. Reducer创建一个新状态,该新状态结合了旧状态和调度的动作。
    1.商店订阅者将收到通知,告知有一个新状态。
  2. redux中组件/容器/动作/动作创建者/存储的角色是什么?
  • Store-保存状态,当新操作到达时,运行dispatch-〉middleware-〉reducers管道,并在状态被新状态替换时通知订阅者。
  • 组件-哑视图部件,不直接知道状态。也称为表示组件。
  • 容器-使用react-redux感知状态的视图片段。也称为智能组件和高阶组件

请注意,容器/智能组件与哑组件只是构建应用的一种好方法。

  • 动作-与通量相同-具有类型和有效负载的命令模式。
  • 操作创建者-创建操作的干方式(并非绝对必要)
  1. redux/react-redux/redux-thunk/其他的区别?
  • redux-通量一样的流动与一个单一的存储,这可以用在任何环境中,你喜欢包括香草js,React,Angular 1/2,等等。
  • react-redux-redux和react之间的绑定。该库提供了一组react hooks-useSelector()useStore()来从存储中获取数据,以及useDispatch()来调度操作。您还可以使用connect()函数来创建HoC(高阶组件),它们侦听存储的状态变化,为 Package 的组件准备 prop ,并在状态变化时重新呈现 Package 的组件。
  • redux-thunk-中间件,允许你编写返回函数而不是操作的操作创建器。thunk可以用来延迟操作的分派,或者只在满足特定条件时分派。主要用于异步调用api,在成功/失败时分派另一个操作。

1.如果你能发布任何简单而精确的redux教程的链接,那将是非常有帮助的。

eulz3vhy

eulz3vhy2#

要回答标题问题:
还原、React还原、还原形实感之间的区别是什么?

  1. redux:主库(独立于React)
    1.还原形thunk:一个redux中间件,它可以帮助你进行异步操作
    1.React-还原:将redux存储与ReactComponents连接
jv4diomz

jv4diomz3#

  • redux:用于管理应用程序状态的库。
  • React-还原:用于管理React应用程序(redux)状态的库。
  • 还原形thunk:用于日志记录、崩溃报告、与异步API对话、路由等的中间件。
62lalag4

62lalag44#

在我看来,Redux对于第一次学习这个库还是有点困惑,需要一些时间来理解和开始使用它。即使你使用Redux Toolkit -最新的库(来自Redux作者)-它也有一些棘手的时刻,可能从一开始就不清楚。
我用的是Master-Hook
Redux、react-redux、redux-thunk和reselect已经安装在库中,您需要按照以下步骤操作。

第一步:创建“src/hooks.js”文件

import MasterHook from 'master-hook'

export const useMyHook = MasterHook({
  storage: "myStorage",
  initialState: {
    myName: 'Vanda',
  },
  cache: {
    myName: 10000,
  }
})

创建组件并将其导出(useMyHook)设置初始状态(initialState:...)设置值需要保持缓存的时间(ms)(cache:...)

第2步:将提供程序添加到src/index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import MasterHook from 'master-hook';

ReactDOM.render(
  <React.StrictMode>
    <MasterHook.Provider>
      <App />
    </MasterHook.Provider>
  </React.StrictMode>,
  document.getElementById('root')
);
  • 导入MasterHook
  • 使用MasterHook.Provider Package 文件
    第3步:在src/App.js中使用钩子
import logo from './logo.svg';
    import './App.css';
    import { useMyHook } from './hooks'
    
    function App() {
      const { myName, setMyName } = useMyHook()
    
      return (
        <div className="App">
          <header className="App-header">
            <img src={logo} className="App-logo" alt="logo" />
            <p>
              My name is {myName}
            </p>
            <a
              onClick={() => setMyName('Boris')}
              className="App-link"
            >
              Set my name to 'Boris'
            </a>
          </header>
        </div>
      );
    }

export default App;

使用MyHook导入钩子
宣布你的钩子

const { myName, setMyName } = useMyHook()

在代码中使用它

{myName}

以及

{()=>setMyName('')}

删除href属性以防止其更改页面。setMyName操作将自动创建。
不需要连接到商店。它已经连接。

第4步:运行项目!

npm run start

就是这样:)

c90pui9n

c90pui9n5#

Redux thunk是一个中间件,它监视或观察通过系统的任何分派操作。

ryhaxcpt

ryhaxcpt6#

下图演示了redux中的数据流:how the data flows through Redux? Redux的优势如下所示:

结果的可预测性-由于总是存在一个真实来源,即存储,因此不会混淆如何将当前状态与应用程序的动作和其他部分同步。可维护性-代码变得更易于维护,具有可预测的结果和严格的结构。服务器端呈现-您只需要传递在服务器上创建的存储,到客户端。这对于初始呈现非常有用,并在优化应用程序性能时提供更好的用户体验。开发人员工具-从操作到状态更改,开发人员可以实时跟踪应用程序中发生的所有事情。社区和生态系统- Redux背后有一个庞大的社区,这使得它更易于使用。一个由有才华的个人组成的大型社区为改进库做出了贡献,并使用它开发了各种应用程序。易于测试- Redux的代码大多是小的、纯的和孤立的函数。这使得代码可测试且独立。[组织][2]- Redux对代码应该如何组织非常精确,这使得代码在团队使用时更加一致和容易。

相关问题