V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shuangshuangda
V2EX  ›  React

React.js,在微信里内嵌 React 写的 H5,新闻列表点击详情进入查看,当返回时要求页面不会重新加载且还在离开时的滚动位置,如何实现?

  •  1
     
  •   shuangshuangda · 2018-12-28 09:41:21 +08:00 · 2477 次点击
    这是一个创建于 2193 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在微信里内嵌 React 写的 H5,比如新闻列表点击详情进入查看,当要返回时要求页面不会重新加载且还在离开时的滚动位置。

    9 条回复    2018-12-28 11:07:47 +08:00
    cctv1005s927
        1
    cctv1005s927  
       2018-12-28 09:46:25 +08:00
    我估计你悬赏解决,就有人给你解决了。
    shuangshuangda
        2
    shuangshuangda  
    OP
       2018-12-28 09:48:14 +08:00
    @cctv1005s927 怎么悬赏啊?
    ChefIsAwesome
        3
    ChefIsAwesome  
       2018-12-28 09:50:46 +08:00 via Android   ❤️ 1
    1.跟微信 react 都没关系。
    2.离开的时候你缓存下数据和滚动位置不就完了。
    ming61177
        4
    ming61177  
       2018-12-28 09:54:21 +08:00
    有好几个解决方法吧,比如,详情页面不要跳转路由,弹个全屏框,不销毁列表页的生命周期,
    shuangshuangda
        5
    shuangshuangda  
    OP
       2018-12-28 09:57:26 +08:00
    @ChefIsAwesome 嗯嗯,除了 localstorage 实现还能如何实现呢?我本来是用额外增加一个根节点,通过点击后渲染另外一个根节点来遮罩住原本的 root 根节点,现在在搜索模块复用的时候,会出现问题。所以想来求教下网上有经验的大佬们,平时要实现这样子的功能都是以哪种方法实现的?
    ming61177
        6
    ming61177  
       2018-12-28 10:00:05 +08:00   ❤️ 1
    如果用 router 在列表 WillUnmount 去缓存数据,然后详情页返回时,列表页可以知道时 PUSH 或者时 POP,如果是 POP 的时候,拿缓存数据跟滚动的位置去展示,但是这样列表页貌似页面会弹一下。。。因为有个滚动的动作,我目前就是用这种方法。。。。不知道大家有什么比较好的解决方法
    shuangshuangda
        7
    shuangshuangda  
    OP
       2018-12-28 10:02:45 +08:00
    @ming61177 嗯嗯,我就是这样的用遮罩的形式处理的。但是,新闻不是都有搜索功能吗,我通过搜索出来的列表复用了新闻列表的组件,在搜索结果里点击进入后再点击返回按钮,结果返回到了新闻列表中,而不是返回到搜索结果列表。我现在的思路是再增加一个根节点,通过参数传递,判断是在新闻列表中点击进入详情的还是搜索列表中点击进入详情的,但感觉好像有点问题。我看网上有用 router 里的 onleave 和 onenter 实现,大佬你平时这样的是如何实现的呢?
    whosesmile
        8
    whosesmile  
       2018-12-28 10:23:12 +08:00   ❤️ 1
    1. 不要用 localStorage,缓存数据为什么不用 redux 之类的?
    2. 不要用遮罩的策略,不稳定维护难,还是用 react-router 做路由处理吧
    3. 常规思路还是离开时缓存数据和滚动位置,恢复时从 redux 读取回来,楼上有人说闪烁问题肯定可以解决的,因为 vue-router 实现了没看到闪烁,google 查查资料吧
    ming61177
        9
    ming61177  
       2018-12-28 11:07:47 +08:00
    @whosesmile 目前貌似只有用 scrollTo 查不到有好的解决方法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1336 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:19 · PVG 01:19 · LAX 09:19 · JFK 12:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.