位置状态、redux和上下文,使用哪一个在组件之间传递数据?

wswtfjt7  于 2022-11-12  发布在  其他
关注(0)|答案(3)|浏览(125)

首先,我知道这个平台是为了解决实际的编程问题而建立的,而不是为了征求建议。但是如果你能澄清疑问,并能给予你有价值的建议,那将是一个很大的帮助。
因此,我们有多个选项可以将数据从一个组件传递到另一个组件。例如,我们可以将数据作为道具传递,我们可以将数据设置为redux,另一个组件可以订阅以存储获取更新的数据,我们可以将数据设置为位置状态(而不是React状态),同时将用户重定向到另一个屏幕,用户可以使用useLocation挂钩从位置状态获取数据。
因此,问题基本上是关于位置状态的,我们是否应该使用位置状态方法将数据从一个组件传递到另一个组件?我知道使用redux和reaction方法也可以做到这一点,但我发现此位置状态方法非常简单,因为我们不必分派操作、重置状态等。
欢迎您的建议:)

o4tp2gmn

o4tp2gmn1#

这真的取决于你的需要。
在 * 大型到巨型 * 应用程序的情况下
组件的状态在多个地方都是必需的,而且状态的改变也是非常频繁的。在这种情况下,你可以使用像React-Redux, Redux-ToolkitFlux这样的状态管理库,但是要记住,状态管理库(redux)的易用性是依赖于你的项目的,所以在开始使用任何状态管理库之前,问自己一个问题,我真的需要它吗?
Redux的创造者自己有一篇文章
适用于 * 小型至 * 中型项目。
您必须在prop drilling、useContextuseReducer hook之间进行选择。如果您有许多组件嵌套在另一个组件中,那么更好的方法是使用hooks中的一个。
那么什么时候使用支柱钻井呢?
当许多组件中不需要状态值时,可以使用道具钻取。

pvcm50d1

pvcm50d12#

因此,问题基本上是关于位置状态的,我们是否应该使用位置状态方法将数据从一个组件传递到另一个组件?
我假设我们具体讨论的是https://reactrouter.com/en/main/hooks/use-location
我不会使用这个钩子将数据从一个组件传递到另一个组件,* 除非 * 数据的来源,事实上是URL(或者它的一部分,哈希段,查询参数等)。这个钩子(可能还有它背后的上下文提供器)不是为了这个,你会误用它,让其他开发人员感到困惑。
排除了useLocation之后,只剩下react context和其他状态管理库(redux等)了。现在的问题是,是否应该使用状态管理库,或者react context是否足够?

ljsrvy3e

ljsrvy3e3#

我希望我正确地理解了你的问题,我的回答对你有帮助。
正如您所说,React中有多种数据传输方法,但它们的使用取决于应用的条件和数据的类型,在我看来,数据的类型在这种情况下非常重要,例如,如果您的数据是布尔或字符串,最好定义状态并用props处理,而比这更好的是,最好使用useLocation(),有时候我建议你使用localStorage。我不建议对一维数据使用redux,比如字符串、布尔值等,因为这会给程序带来不必要的负担。但是如果你的数据是多维的,而且很大,比如数组和对象,我建议你在第一层使用useState(),在第二层使用useState()钩子并传递属性。我使用useContext()挂钩,在第三层,使用Redux之类的数据存储。

相关问题