小程序
小游戏
企业微信
微信支付
扫描小程序码分享
如下面代码片段中的that变量,在上面的页面关闭后,下面页面中that的指向变成了关闭了的页面.
这算是小程序的bug?还是就是目前这种规则?如果是已知规则,那官方是否需要改进一下?
https://developers.weixin.qq.com/s/mqa4fHme7ZnX
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
我认为小程序的设计是,跳转到新的页面时,仅仅是会把Page()压入栈中,但是Page()之外的部分是不会重新声明.
const app = getApp() let that; let count = 1; function test(){ count++; console.log(count) } test(); Page({ data: { btntext:'setData测试', }, test:function(){ that.setData({btntext:'setData成功!'}) }, onLoad() { that = this; }, onShow(){ this.setData({nodeid:that.__wxExparserNodeId__,btntext:'setData测试'}) } })
这是我测试的一段代码,在初次渲染之后,count的输出值是会被累加的.(意味着外部的代码有被运行到)但是之后无论跳转到什么页面,这个count的值就不会继续累加了.由此可得除了第一次渲染会初始化Page()外部的变量,之后的跳转就都不会再次声明这个变量了.
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
看不太懂你要表达什么意思,或者你要做什么东西?
你这代码里就只有一个页面。。。跳来跳去还是那个
一个页面的进10次栈 AppData 面板数据 都是一套 最新的
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
我认为小程序的设计是,跳转到新的页面时,仅仅是会把Page()压入栈中,但是Page()之外的部分是不会重新声明.
const app = getApp() let that; let count = 1; function test(){ count++; console.log(count) } test(); Page({ data: { btntext:'setData测试', }, test:function(){ that.setData({btntext:'setData成功!'}) }, onLoad() { that = this; }, onShow(){ this.setData({nodeid:that.__wxExparserNodeId__,btntext:'setData测试'}) } })
这是我测试的一段代码,在初次渲染之后,count的输出值是会被累加的.(意味着外部的代码有被运行到)但是之后无论跳转到什么页面,这个count的值就不会继续累加了.由此可得除了第一次渲染会初始化Page()外部的变量,之后的跳转就都不会再次声明这个变量了.
看不太懂你要表达什么意思,或者你要做什么东西?
你这代码里就只有一个页面。。。跳来跳去还是那个
一个页面的进10次栈 AppData 面板数据 都是一套 最新的