reactjs - 上下文和反应,最佳实践
问题描述
我有一个项目,其中包含(除其他外)事件列表视图,当然还有一个单独显示这些事件的独特页面,您可以轻松理解有两个不同的路径:我添加的 /events/ 和 /events/:id对事件进行一些过滤,当然当我过滤列表时,然后单击特定事件以查看它,然后返回事件列表,当然,忘记我的过滤器。
我应该使用上下文还是有我没有听说过的特定方式?
我还考虑为所有过滤器设置不同的路径(即:/events/filter_type_1 等,其中 filter_type_1 是人类可读的。)
什么是更合乎逻辑的方式?
解决方案
是和否,有 3 种方法可以解决此问题:
将状态存储在更高的组件中
而不是将状态存储在您的 overviewView 组件中。将其存储在执行路由的上面的组件中。这样它就不会迷失在导航中。(我不喜欢这种方法)。
持续状态
您可以将状态保存到localStorage
并在组件挂载时读取此状态。这样,当您回来时,您的状态将持续存在。
localStorage.getItem("overviewCompnent_filter");
localStorage.setItem("overviewCompnent_filter",yourData);
外化状态
有一些状态库可以帮助您将顶级应用程序状态置于 react 组件之外,例如:mobx(我最喜欢的)和 redux。这些库使用下面的上下文 api 为您的组件提供正确的状态/值,您可以让它们将它们作为 props 注入到您的组件中(因此它就像第一个选项,但更清洁的解决方案)。
这样,您可以将所有顶级状态保持在一起,而不必一直沿组件树向下传递。
推荐阅读
- moodle - Eroor 在cpanel上安装moodle
- python - 如何使用熊猫提取数据矩阵?
- google-cloud-platform - 数据管道:Google Cloud Function 中的 URL 请求以 VPC 连接器上的“崩溃”结束
- javascript - 新输入元素的外观不适用于 addEventListener
- pip - 在 Ubuntu 中安装 python 3.6
- javascript - D3折线图悬停时相同的刻度给出不同的值
- ruby-on-rails - Rails API,设计用户注册,使用 Vue Js 注册 COR
- python - write() 参数必须是 str,而不是 pyhdbcli.ResultRow
- reactjs - 4 状态“进度”栏反应组件
- stripe-payments - 为什么 Stripe.js 在 paymentRequest 和 PaymentIntent 中重复选项