-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
页面navigateback以后再打开上一次获取的data还在 #634
Comments
如果想重置在back的时候清空数据的话可以在onShow内进行重置 |
@lxyisme 是不能在onShow里面重置的, 因为用户最小化再次进入也会走 onShow, 或者 屏幕熄灭然后有点亮也会走 onShow 的, 最好的方案是写一个 Vue Plugin, 通过 mixin 混入 onUnload 方法, 然后在里面写 Object.assign(this.$data, this.$options.data()) // 定义插件
const somePlugin = {
install: function () {
Vue.mixin({
onUnload() {
if (this.$options.data) {
Object.assign(this.$data, this.$options.data())
}
}
})
}
}
// 使用插件
Vue.use(somePlugin) |
@shaonialife navigateTo 是不会卸载页面的,所以是不会走onUnload, 这样的话 navigateBack 回的页面是不会初始化数据的哟,这种情况就得在 onShow 和 onHide 初始化数据,还有就是你这种写法是毁灭性的,每一个页面卸载都会调用,这样可不太好呐 |
@lxyisme 这么写就是为了模拟小程序原生表现, 页面卸载的时候数据回到初始状态, 我不希望用户再次进入该页面还能看到上一次的数据, 如果真要保存, 那也是存在 store 或者 通过wx.setStorage来保存数据, 如果我写在 onShow 里面, 那意味着我如果屏幕熄灭然后又点亮或者最小化后又重新进入, 数据肯定会被初始化, 造成数据丢失 |
navigateTo 是不会卸载页面, 那是因为开了一个新页面, 旧页面会走 onHide, 如果在 onHide 里面初始化数据, 那意味着用户再回来这个页面时, 数据已经丢失了. navigateBack 和 手动滑动返回都会卸载页面, 是会回调 onUnload 的, 在这个时候把数据清掉是最好时机 |
A 前往 B 页面 -> B 页面数据变化 -> 返回 A 页面 再进入 B 页面 -> 之前 B 页面的数据还在 这个需要框架解决一下 可能是内部做了相关的数据缓存? |
mark |
a 页面 navigateto b页面 navigateback 返回a页面 |
issue超过30天无更新或响应,7天后将自动关闭,如果问题状态有更新请及时更新issue |
页面navigateback以后再打开上一次获取的data还在
难道只能丑陋地手动重置data嘛?
The text was updated successfully, but these errors were encountered: