请问微信小程序内H5页面回退如何刷新页面,或者说如何监听小程序回退按钮

比方说点击a页面的链接跳转到b页面,点击小程序左上角的回退,回到a页面时,刷新页面重新发起首页的接口请求

阅读 5.8k
2 个回答

请问是在ios端吗?
如果是的话按下面操作试试
方式一:

var isPageHide = false; 
window.addEventListener('pageshow', function () { 
    if (isPageHide) { 
        window.location.reload(); 
    } 
}); 
window.addEventListener('pagehide', function () { 
    isPageHide = true; 
}); 

方式二:

window.onpageshow = function(event){
    //event.persisted 判断浏览器是否有缓存, 有为true, 没有为false
    if (event.persisted) {  
        window.location.reload();
    }
}

小程序的webview 监听不到pageshow事件,能监听到visibilitychange 事件。

const pageCacheBackHandler = useCallback(() => {
    throttle(doSomething());
  }, [doSomething]);

const pageShowEventHandler = useCallback(
    (event) => {
      if (event && event.persisted) {
        pageCacheBackHandler();
      }
    },
    [pageCacheBackHanlder]
);

const visibilityStateChangeEventHandler = useCallback(() => {
    if (document.visibilityState == "visible") {
      pageCacheBackHandler();
    }
  }, [pageCacheBackHandler]); 

 useEffect(() => {
    window.addEventListener("pageshow", pageShowEventHandler);
    document.addEventListener(
      "visibilitychange",
      visibilityStateChangeEventHandler
    );

    return () => {
      window.removeEventListener("pageshow", pageShowEventHandler);
      document.removeEventListener(
        "visibilitychange",
        visibilityStateChangeEventHandler
      );
    };
  }, [
    pageShowEventHandler,
    visibilityStateChangeEventHandler,
  ]);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题