我不知道如果一个应用程序已经使用了像Redux这样的工具,那么使用Context API的任何用例。看起来Context API只会在性能不重要并且开发人员不了解Redux的快速和肮脏的情况下有用。这看起来像是一个准确的Assert吗?也就是说,如果一个应用程序已经实现了Redux,那么就没有其他用例可以证明Context API的使用是合理的?
o0lyfsai1#
是的,有。Context API是一种用于在React组件之间共享数据(包括状态)的机制。Redux是一种状态管理工具。您可以让Redux(用于管理状态)和Context在组件之间共享数据(不同于Redux状态)。这是一个同时使用Redux和Context API的真实开源React应用程序。推荐阅读:为什么React Context不是"状态管理"工具(以及为什么它不能取代Redux)
Context API
mctunoxg2#
API允许你从任何组件(树中的任何地方)向下传递一个值给它的所有后代。Redux管理一个全局状态。这是完全不同的。下面是一个具体的示例,即使您使用的是Redux,也需要使用Context API:假设您正在设计一个类似于时间轴的页面,其中包含许多Post(每个帖子都有一个id,允许您在Redux商店中查找),并且每个Post组件都包含许多子组件,用于显示标题、内容、喜欢、评论、标签等。所有这些子组件都需要访问post id,以便从Redux存储中获取正确的数据。(以及孙子等),但这可能会很烦人,因此您可以将每个Post Package 在一个Context中,并将post id作为一个值,而不是prop-drilling,然后所有子和孙可以直接使用上下文值而无需任何支撑钻井。Redux无法解决这个问题,因为它依赖于为每个帖子提供单独的上下文。
Post
2条答案
按热度按时间o0lyfsai1#
是的,有。
Context API
是一种用于在React组件之间共享数据(包括状态)的机制。Redux是一种状态管理工具。您可以让Redux(用于管理状态)和Context在组件之间共享数据(不同于Redux状态)。
这是一个同时使用Redux和Context API的真实开源React应用程序。
推荐阅读:为什么React Context不是"状态管理"工具(以及为什么它不能取代Redux)
mctunoxg2#
API允许你从任何组件(树中的任何地方)向下传递一个值给它的所有后代。Redux管理一个全局状态。这是完全不同的。
下面是一个具体的示例,即使您使用的是Redux,也需要使用Context API:假设您正在设计一个类似于时间轴的页面,其中包含许多
Post
(每个帖子都有一个id,允许您在Redux商店中查找),并且每个Post
组件都包含许多子组件,用于显示标题、内容、喜欢、评论、标签等。所有这些子组件都需要访问post id,以便从Redux存储中获取正确的数据。(以及孙子等),但这可能会很烦人,因此您可以将每个
Post
Package 在一个Context中,并将post id作为一个值,而不是prop-drilling,然后所有子和孙可以直接使用上下文值而无需任何支撑钻井。Redux无法解决这个问题,因为它依赖于为每个帖子提供单独的上下文。