javascript - 保持计时器在组件之间同步

标签 javascript reactjs next.js

背景知识:我正在尝试学习 React 并正在使用 next 构建一个小型应用程序(使用我不久前完成的教程中的模板)。我最近遇到了一个问题,我需要在两个不在同一层次结构中的组件之间保持计时器同步。

我有一个 Item 组件,它以更简洁的方式显示有关该项目的一些详细信息(描述、标题等)(一个图 block 仅显示整个项目信息的一部分)。如果我单击 Item 磁贴,我会看到一个 next.js 链接组件,如下所示:

 <Link href={{pathname: "/item", query: { id: item.id }}}>
    <a>{item.title}</a>
 </Link>

这会将我重定向到一个包含 ItemDetails 组件的新页面,该组件仅更详细地显示该项目的所有信息,并使用整个页面而不是仅用于 的图 block 项目

如上所述,问题是我想要一个在 ItemItemDetails 之间保持同步的倒计时器(可以从它们中的任何一个及其状态都会反射(reflect)在另一个组件中)。最初,我想到使用 MobX 并创建一个存储,并使用它来保持两个组件之间相同的状态。然而,问题是我有 Item 组件的多个实例,每个实例都指向自己的 ItemDetails 并使用一个仅共享状态的存储所有 Item 之间第一个启动的计时器(这里可能是错误的,因为 MobX 是我昨天才开始阅读的内容 ^^)。

我的问题是,解决这个问题的最佳方法是什么?使用 Mobx plus 商店是否可行,还是应用程序的结构问题(例如:找到一种方法使 ItemItemDetails 成为同一层次结构的一部分?

如有任何帮助,我们将不胜感激。

最佳答案

这是一个使用 React“上下文”在组件和引用之间共享数据以保持重新渲染时间的工作示例:

https://codesandbox.io/s/silly-http-h25dr?fontsize=14&hidenavigation=1&theme=dark

关于javascript - 保持计时器在组件之间同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59983523/

相关文章:

javascript - 如何在 DOM 中显示 source map 的 JS 错误

javascript - Next.js 按需静态再生

javascript - NextJS 将记录 id 传递给具有模态的函数

javascript - 下一个 js 应用程序无法运行 react 模块

javascript - jQuery 菜单无法正常工作

javascript - 如何从异步调用返回响应?

reactjs - Material UI React Paper 组件在嵌套网格显示问题

javascript - 修改状态和更新我的 reducer 的正确方法? ( react /Redux)

javascript - 使用 JS 和 CSS 的高级 Material 设计过渡 - 从哪里开始?

javascript - 是什么导致我的控制台崩溃?