当前位置: 首页 > 知识库问答 >
问题:

更新reducer中的状态如何触发组件的重新呈现?

索寒
2023-03-14

我知道mapstatetoprops正在将我们的Redux应用程序状态映射到我们的React组件道具,但是我不太明白当减速器返回一个新的状态时,幕后会发生什么——这是如何触发将道具映射到应用程序级别的组件的重新渲染的州?

在纯React中,setState触发重新渲染正确吗?类似的事情(或同样的事情)通过Redux发生吗?

共有2个答案

何乐
2023-03-14

当你使用redux“connect”函数创建一个组件时,关键是在幕后你连接到redux状态,并且有一个状态变化的监听器。

因此,您创建了一个简单的组件,该组件从props获取其值,但这些props是使用带有“mapStateToProps”的连接从状态获取的。

从未深入研究过redux react connect函数,但如果您愿意,您肯定可以继续了解它的具体功能。

但重点是我上面解释的。

雷国兴
2023-03-14

ReduxReact-Redux都采用浅相等检查。

特别地:

Redux的combinereducer实用程序粗略地检查由它调用的reducer引起的引用更改。

React-Redux的connect方法生成的组件可以粗略地检查对根状态的引用更改,从mapstatetrops函数返回值,以查看包装的组件是否确实需要重新渲染。这种肤浅的检查需要不变性才能正常工作。

 类似资料:
  • 本文向大家介绍如何更新组件的状态?相关面试题,主要包含被问及如何更新组件的状态?时的应答技巧和注意事项,需要的朋友参考一下 ReactDOM.render this.setState this.forceUpdate useState useReducer

  • 我有一个数组列表 记录在子组件中,它返回给我初始数组。 从API更改数据后 如果我在函数中将该数组记录在父组件中,我将得到一个对象数组。 它正在更改 ,但子组件没有。 我该怎么办??

  • 我正在学习React钩子,这意味着我将不得不从类转移到函数组件。以前,在类中,我可以拥有与状态无关的类变量,我可以在不重新呈现组件的情况下更新这些变量。现在我试图用钩子重新创建一个组件作为函数组件,我遇到了这样一个问题:我不能(就我所知)为该函数创建变量,因此存储数据的唯一方法是通过钩子。然而,这意味着每当该状态更新时,我的组件将重新呈现。 我已经在下面的示例中说明了这一点,我试图将类组件重新创建

  • 我猜这可能与从父级打开有关,但我有其他组件,它们内部的状态发生变化,所以我有点困惑,为什么这个组件不尊重它的新状态。 谢谢

  • 我正在将父组件的状态从父组件传递到子组件。在子组件中,我有一个不同的状态。我正在对子组件的状态执行一些操作,并且结果必须添加到父组件的状态。因此,在我的父组件中,我编写了一个回调函数,该函数将更新父组件的状态。代码为: 因此,这个函数随后作为道具传递给子组件: 然后在我的子组件中,我试图实现回调函数为: 但这并没有达到预期效果。这是正确的方法吗?有人能帮我吗? 我试图通过实现这里提供的解决方案来解

  • 我的Redux状态是如何更新的,可以在pokelist.js文件中注销,但是我的状态变量没有设置好,cardList还是一个空数组,我如何正确设置状态?我注销pokelist.js文件中的集合,它首先注销一个空数组,然后是一个包含元素的数组。