小程序
小游戏
企业微信
微信支付
扫描小程序码分享
微信小程序第一次进入页面,setData能正常更视图,再次进入页面,setData数据更新,但是视图不更新
6 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
第二次进入时的this指向的实例和第一次的实例不同导致的。
定义个页面全局变量mythis
onShow中赋值:mythis=this;
然后外部触发时调用mythis.setData
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
我刚才也遇到这个问题了,查了一下,是我自己侦听的事件在unload时没有卸载,第二次打开页面再次侦听到事件了。也就是内存泄露了。我用的是事件,建议用单例回调的朋友可以查一下是不是页面退出时没有删除单例上的callback。
但是为啥上一个没销毁的页面会导致当前页面数据失效还没搞懂。
楼主,我也遇到了个类似的问题,请问下你是怎么解决的
我也遇到同样的问题,请问楼主是否已经解决?
你在wx.nextTick后试试
创建一个可以重现问题的代码片段才能判断问题 https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
第二次进入时的this指向的实例和第一次的实例不同导致的。
定义个页面全局变量mythis
onShow中赋值:mythis=this;
然后外部触发时调用mythis.setData
我刚才也遇到这个问题了,查了一下,是我自己侦听的事件在unload时没有卸载,第二次打开页面再次侦听到事件了。也就是内存泄露了。我用的是事件,建议用单例回调的朋友可以查一下是不是页面退出时没有删除单例上的callback。
但是为啥上一个没销毁的页面会导致当前页面数据失效还没搞懂。
楼主,我也遇到了个类似的问题,请问下你是怎么解决的
我也遇到同样的问题,请问楼主是否已经解决?
你在wx.nextTick后试试
const regeneratorRuntime = global.regeneratorRuntime
import api from '../../api/api'
var app = getApp()
var addData = app.globalData
Page({
/**
* 页面的初始数据
*/
data: {
taskList: [], //任务列表
pages: null, //总加载页数
currentPage: 1, //当前页
is_load: true, //是否加载请求
},
/**
* 查询任务列表
*/
async applyTasks() {
if (this.data.is_load) {
this.setData({
is_load: false,
})
var params = {
pageSize: 10,
currentPage: this.data.currentPage,
isGetAll: false,
}
// this.setData({
// taskList:[]
// })
let res = await api.connect('/task/queryAllTasks', {
data: params,
})
if (res.data.code === '2000') {
var arr1 = this.data.taskList,
arr2=res.data.data;
if (this.data.currentPage === 1) {
this.setData({
taskList: arr2,
pages: Math.ceil(res.data.count / 10),
is_load: true,
})
this.setData({
taskList:this.data.taskList
})
} else {
this.setData({
taskList: arr1.concat(arr2),
pages: Math.ceil(res.data.count / 10),
is_load: true,
})
}
}
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.setData({
currentPage: 1,
})
this.applyTasks()
wx.setNavigationBarTitle({
title: addData.textTitle,
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
const pages = getCurrentPages()
const perpage = pages[pages.length - 1]
perpage.onLoad()
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {},
})
创建一个可以重现问题的代码片段才能判断问题 https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html