首先,我知道这个平台是为了解决实际的编程问题而构建的,而不是征求建议。但如果你能消除疑虑,并提出有价值的建议,那将是一个很大的帮助。
因此,我们有多种选项可用于将数据从一个组件传递到另一个组件。例如,我们可以将数据作为道具传递,我们可以设置数据到redux中,另一个组件可以订阅存储获取更新的数据,我们可以在将用户重定向到另一个屏幕时将数据设置到位置状态(而不是反应状态(,用户可以使用useLocation
钩子从位置状态获取数据。
所以问题基本上是关于位置状态的,我们应该使用位置状态方法将数据从一个组件传递到另一个组件吗?我知道使用redux和反应方式我们也可以做到这一点,但我发现这种位置状态方法非常简单,因为我们不必调度动作、重置状态等。
欢迎您的建议:(
这实际上取决于您的需求。
大到巨大大小应用的情况
组件的状态在多个位置都是必需的,并且状态的变化非常频繁。在这种情况下,你可以使用像React-Redux, Redux-Toolkit
或Flux
这样的状态管理库,但请记住,随着状态管理库(redux(的易用性,它是你项目的一个依赖项,所以在开始使用任何状态管理库之前,问问自己我真的需要它吗?
Dan Abramovredux的创建者自己有一篇文章你可能不需要redux
在中小型项目的情况下。
您必须在支柱钻孔、useContext
和useReducer
挂钩之间进行选择。如果您有许多组件嵌套在一起,那么更好的方法是使用其中一个hooks
。
那么什么时候使用道具钻呢?
在许多组件中不需要状态值时,可以使用道具钻孔。
所以问题基本上是关于位置状态的,我们应该使用位置状态方法将数据从一个组件传递到另一个组件吗?
我想我们谈论的是https://reactrouter.com/en/main/hooks/use-location
我不会用它将数据从一个组件传递到另一个组件,除非数据的来源,真相的来源,实际上是URL(或其部分,哈希段,查询参数等(。这个钩子(可能还有它背后的上下文提供程序(并不是为了这个目的,你会滥用它并混淆其他开发人员。
排除了useLocation
,只剩下react上下文和其他状态管理库(redux等(。现在的问题是,您应该使用状态管理库吗?或者react上下文是否足够?
我希望我能正确理解你的问题,我的回答对你有帮助。
正如您所说,React中有各种数据传输方法,但它们的使用取决于应用程序的条件和数据类型。在我看来,在这种情况下,数据的类型非常重要,例如,如果你的数据是布尔或字符串,最好定义状态并用props处理,最好使用useLocation()
,有时我建议你使用localStorage
。我不建议对字符串、布尔值等一维数据使用redux,因为这会给程序带来不必要的负担。但如果你的数据是多维的、大的,比如数组和对象,在第一级,我建议你使用useState()
钩子并传递道具,在第二级,使用useContext()
钩子,在第三级,使用数据存储,比如Redux
。我希望我能帮助你