一、在utils下新建文件globalPage.js 其作用如下
自动设置全局数据:在页面加载时,自动将一些全局数据(如主题数据、系统信息等)设置到当前页面。
提供主题更新方法:通过
setThemeChange
方法,可以在页面中方便地更新主题数据。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22module.exports = function (app) {
const originalPage = Page;
Page = function (config) {
const {
onLoad
} = config;
config.onLoad = function (onLoadOptions) {
if (typeof onLoad === 'function') {
this.setData({
themeData: app.globalData.themeData,
})
onLoad.call(this, onLoadOptions)
}
}
config.setThemeChange = function (){
this.setData({
themeData: app.globalData.themeData
})
}
return originalPage(config)
}
}二、在app.js中写对应方法,配合globalPage.js,将数据存储在全局中
获取主题:
- 使用
setTimeout
模拟异步获取主题数据的过程。在实际应用中,你可以使用wx.request
或其他网络请求方法来获取主题数据。
- 使用
构建主题字符串:
themes
对象包含了各种主题颜色的键值对。- 使用
for...in
循环遍历themes
对象,将每个键值对转换成 CSS 变量的字符串格式,并存储在themeString
中。
存储主题数据:
- 将构建好的
themeString
存储在globalData.themeData
中,以便在整个应用中访问。
- 将构建好的
通知应用更新主题:
- 调用
noticeSetThemes
方法,通知应用更新主题样式。这个方法需要你在App
实例中定义,用于更新应用的样式。
- 调用
1 | const globalPage = require('utils/globalPage.js'); |
三、具体使用
在wxml文件
最顶级view标签
1 | <view style="{{themeData}}"> |
完成以上步骤,那么wxss文件就可以使用css变量来使用
1 | .button { |