当前位置: 首页 > 面试题库 >

React-Redux:应该将所有组件状态保存在Redux Store中

隆谦
2023-03-14
问题内容

说我有一个简单的切换:

当我单击按钮时,颜色组件在红色和蓝色之间切换

我可以通过执行以下操作来达到此结果。

index.js

Button: onClick={()=>{dispatch(changeColor())}}
Color: this.props.color ? blue : red

container.js

connect(mapStateToProps)(indexPage)

action_creator.js

function changeColor(){
 return {type: 'CHANGE_COLOR'}
}

reducer.js

switch(){
case 'CHANGE_COLOR':
return {color: true}

但这是很多代码的地狱,我可以用jQuery,某些类和某些CSS在5秒钟内完成一些工作。

所以我想我真正要问的是,我在这里做错了什么?


问题答案:

Redux主要用于“应用程序状态”。也就是说,任何与您的应用程序逻辑有关的内容。建立在该状态之上的视图是该状态的反映,但不必为该状态所做的任何事情专门使用该状态容器。

只需问以下问题:该状态对应用程序的其余部分是否重要?应用程序的其他部分是否会基于该状态而有所不同?在许多较小的情况下,情况并非如此。下拉菜单:打开或关闭的事实可能不会对应用程序的其他部分产生影响。因此,将其连接到您的商店可能是过大的选择。这当然是一个有效的选择,但并不能真正为您带来任何好处。最好this.state每天使用并调用它。

在您的特定示例中,切换按钮的颜色是否会对应用程序的其他部分产生影响?如果它是应用程序主要部分的某种全局开/关切换,则它肯定属于商店。但是,如果您只是在单击按钮时切换按钮颜色,则可以保留本地定义的颜色状态。单击按钮的动作可能还具有其他需要动作分派的效果,但这与应该使用什么颜色的简单问题是分开的。

通常,请尝试使应用程序状态尽可能小。您不必将 所有东西
都推到那里。在需要时执行此操作,或者将某些内容保留在其中很有意义。或者,如果使用开发工具可以使您的生活更轻松。但是不要过多地强调它的重要性。



 类似资料:
  • 我正在使用React-Redux,在阅读了React-router-Redux和Redux-router之后,在阅读了Dan Abramov的答案之后,我决定使用“香草”React-router(此时我不关心时间旅行等)。 剩下的唯一悬而未决的问题是如何跨不同的路径处理状态。在我的应用程序中,每个路由子树都可以是不同的独立部分(尤其是当它变大时)。使用一个存储来处理所有路由/页面仍然是一种好的做法

  • 问题内容: 我只是做一个简单的应用程序来学习与redux异步。我已经使所有工作正常进行,现在我只想在网页上显示实际状态。现在,我实际上如何在render方法中访问商店的状态? 这是我的代码(所有内容都在一页中,因为我只是在学习): 因此,在状态的render方法中,我想列出商店中的所有内容。 谢谢 问题答案: 您应该创建单独的组件,该组件将侦听状态更改并在每次状态更改时进行更新:

  • 我只是做了一个简单的应用程序学习异步与Redux。我已经使所有的工作,现在我只想显示的实际状态到网页上。现在,我如何在render方法中实际访问存储的状态? 这里是我的代码(所有内容都在一个页面中,因为我只是在学习): 谢谢

  • 问题内容: 我有一个具有与组件本身相同类型的子组件的组件。我也可以渲染孩子,但是孩子似乎无法访问他们的状态。我在Redux中使用React 另外,我正在使用Material-ui中的ListItem(它们最终呈现在List组件中),并且我的代码受到官方redux回购中的树视图示例的严重影响。我的状态如下所示: 所示状态与树状示例中的状态相同 问题答案: 好吧,如果我理解正确,那么您希望这些组件从r

  • 我有一些“ChangeMainItem”操作(在我的例子中,它是由外部系统或可能的组件之一调度的)。此操作(例如)仅更新reducer中状态的一个属性(例如)。 我的组件A和B需要对此状态更改做出反应:显示加载指示器、获取其他数据并显示结果。顺序动作可以通过一些异步动作库来完成,但是我应该把调度异步动作放在哪里呢?显然,我不能在组件A和B的reducer中分派异步操作,我也不想将原始操作更改为异步

  • [编辑] 问题不在于isAuth属性,而在于ProtectedRoad中重定向组件中的props.location!尽管如此,如果你有一个问题来理解use Selector或mapStateToProps,去@Versifici的答案! [结束编辑] 我有一个React/Redux应用程序,在authReducer中具有isAuth属性。我想将其传递给我的ProtectedRoute组件以检查行为