Skip to content
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

Skyline渲染模式重新进界面wxs模块中数据不初始化 #209

Open
202225feng opened this issue Oct 25, 2024 · 4 comments
Open

Skyline渲染模式重新进界面wxs模块中数据不初始化 #209

202225feng opened this issue Oct 25, 2024 · 4 comments

Comments

@202225feng
Copy link

发现个使用Skyline引擎时会出现的问题。做了一个点击计数的界面,使用Skyline后出现异常。原本WebView渲染重新进界面计数器归零,用Skyline渲染重新进界面次数保留。
代码片段连接:https://developers.weixin.qq.com/s/Bjb9iQmx7BUP
代码截图:
Wxml:
image
Wxs:
image
Js:
image
跳转到计数界面,点几下计数,反回初始界面再跳转到计数界面。运行结果:
WebView渲染:
微信截图_20241010181243
Skyline渲染:
微信截图_20241010181254
js中的数据是都归零的。原本用WebView引擎时wxs模块中的全局变量是归零的,只有Skyline引擎下没有归零。

@LastLeaf
Copy link
Member

LastLeaf commented Oct 28, 2024

webview 的 wxs 运行原理和 skyline 不同。简单来说, webview 上的 wxs 是需要在每个线程上分别执行的(每个页面是一个独立的线程), skyline 是纯粹的小程序生命周期内单实例的。

所以 wxs 中不应该保存状态。

@202225feng
Copy link
Author

现在的情况是WebView渲染时wxs不保存状态,但是skyline渲染时wxs保存状态。我的项目从WebView转成用Skyline后界面结果就与原来不一样了,费挺大劲才发现是这个原因。这算不算是Skyline的bug?

@LastLeaf
Copy link
Member

我不是很清楚 skyline 具体的细节,不过从基础架构上看应该就是这样的了。应该也没法改,属于是可预见的非兼容性变更。

已经请求相关同事 document 相关详情。

@LastLeaf
Copy link
Member

P.S. 考虑到 webview 在特殊情况下可能会刷新重启——刷新然后尝试根据 data 恢复到刷新前的状态。在 webview 中保存 wxs 状态也是不可靠的,可能会丢失。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants