首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应像Vue js一样能维持生命吗?

问反应像Vue js一样能维持生命吗?
EN

Stack Overflow用户
提问于 2017-10-19 05:40:46
回答 4查看 3.6K关注 0票数 6

我做了一个有反应的js的Todo列表。这个网站有列表和详细页面。有一个列表和一个列表有10个项目。当用户滚动底部时,将加载下一页数据。

用户单击第40项->监视详细信息页(react路由器) ->单击后退按钮

主页滚动页的顶部,并再次获得第一页的数据。

如何不用Ajax调用恢复滚动位置和数据?

当我使用Vue js时,我使用了“保持活着”的元素。帮帮我。谢谢您:)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-11-12 03:50:33

保持-活着真的很好。通常,如果您希望保留状态,可以使用Flux (Redux )设计模式将数据存储在全局存储中。您甚至可以将其添加到单个组件用例中,如果您愿意的话,不可以在其他任何地方使用它。

如果您需要保持组件的周围,您可以查看提升组件,并添加一个“显示:无”样式到那里的组件。这将保留节点,从而保持组件状态。

值得注意的是,“关键”字段可以帮助React引擎确定应该卸载哪些树,以及应该保留什么。如果您有相同的组件,并且希望在多个使用中保留其状态,请维护键值。相反,如果要确保卸载,只需更改键值即可。

票数 0
EN

Stack Overflow用户

发布于 2019-09-10 04:01:07

如果您正在使用react-router

组件在前进或后退时不能缓存,这会导致在使用Route时丢失数据和交互。

组件将在路由不匹配时卸载

在阅读了路由的源代码后,我们发现使用子支持作为一个函数可以帮助控制渲染行为。

隐藏而不是删除将修复此问题。

我已经用我的工具反应-路由器-缓存-路由修复了它

用法

将<Route>替换为<CacheRoute>

将<Switch>替换为<CacheSwitch>

如果您想要真正的<KeepAlive /> for React

我有我的实现反应活化

在线演示

用法

代码语言:javascript
复制
import KeepAlive, { AliveScope } from 'react-activation'

function App() {
  const [show, setShow] = useState(true)

  return (
    <AliveScope>
      <button onClick={() => setShow(show => !show)}>Toggle</button>
      {show && (
        <KeepAlive>
          <Test />
        </KeepAlive>
      )}
    </AliveScope>
  )
}

​

执行原则很容易说。

因为React将卸载内部组件层次结构中的组件,所以我们需要提取<KeepAlive>中的组件,即它们的children道具,并将它们呈现为不会被卸载的组件。

票数 4
EN

Stack Overflow用户

发布于 2018-07-11 14:39:02

不幸的是,到目前为止,这是不可能的。但是在React存储库中有一个问题:https://github.com/facebook/react/issues/12039

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46823415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档