我目前正在学习React,并试图找出如何将其与Redux一起用于构建移动应用程序.我有点困惑这两者是如何联系在一起的.例如,我在React https://www.raywenderlich.com/99473/introducing-react-native-building-apps-javascript中完成了本教程,但现在我想try 在该应用程序中添加一些简化程序/操作,我不确定这些与我已经完成的工作有何关联.

推荐答案

React是一个UI框架,负责更新UI以响应"真相来源",该来源通常被描述为某个组件"拥有"的状态.Thinking in React很好地描述了国家所有制的概念,我强烈建议你仔细研究一下.

当状态是分层的且或多或少与组件 struct 相匹配时,这种状态所有权模型运行良好.通过这种方式,状态在许多组件之间"分散",应用程序也很容易理解.

然而,有时应用程序的远程部分希望访问相同的状态,例如,如果你缓存获取的数据,并希望在同一时间一致地在任何地方更新数据.在这种情况下,如果你遵循React模型,你会在组件树的顶部找到一堆非常大的组件,它们通过一些不使用它们的中间组件传递大量的props ,只为了到达一些真正关心这些数据的叶子组件.

当你发现自己处于这种情况时,你can(但不必)使用Redux将这种状态管理逻辑从顶级组件"提取"到称为"还原器"的单独函数中,并将关心该状态的叶组件直接"连接"到它,而不是通过整个应用程序传递props .如果你还没有这个问题,你可能不需要Redux.

最后,请注意,Redux并不是这个问题的最终解决方案.例如,有许多人对你所在州以外的MobX个组件不满意.我建议您首先对React-state模型有一个明确的了解,然后独立判断不同的解决方案,并与它们一起构建小型应用程序,以了解它们的优缺点.

(这个答案的灵感来自皮特·亨特的react-howto篇指南,我建议你也阅读一下.)

Reactjs相关问答推荐

react应用程序中的字体不适用于.scss扩展名

从app.js导航,这是在BrowserRouter包装之外

在一个地方调用函数会影响其他地方调用该函数

For循环中的元素在Reaction中丢失挂钩

try 在Dockerfile中使用AWS CLI将React构建工件上传到S3时出错

如何处理具有REACTION-REDUX状态的Nextjs路由警卫

App.js中的H2组件不会动态呈现.这可能是什么问题?

获取未捕获的错误:Gatsby生产版本上的最小化react 错误#418

如何在整个应用程序中显示通用弹出窗口中的点击事件

React,当我调用handleSubmit()函数时,我正在将application/json和multiform/data中的数据发送到后端,但student_image中没有数据:null

根据用户 Select 的注册类型更改表单字段

来自一个自定义 React Native 组件的样式从另一个自定义组件移除样式

在复选框中react 检索选中的值

将 ref 转发到所有页面(路由组件)只是为了将其应用于
并具有跳过导航链接(按钮).有没有更好的办法?

React + i18next + Trans + Prettier:Prettier 最终会在重新格式化 JSX 时 destruct 翻译

错误:无效挂钩调用.钩子只能在函数组件的主体内部调用.使用 next/router 时

如何在 MUI 数据网格中的 renderCell 组件之间传递状态

将 dict 值转换并插入到react 钩子的列表中

无法重用我的组件,它只显示 1 次

下拉菜单在 AppBar 中未正确对齐