在微信小程序開發中,管理和使用全局變量是一種常見的需求。例如,可以通過小程序的App實例和globalData對象來實現全局變量的存儲和共享。以下是詳細說明:
1. 全局變量的定義
微信小程序提供了 App() 函數,其中可以定義一個 globalData 對象,用于存儲全局變量。
定義方式:
在 app.js 文件中定義全局變量:
// app.js
App({onLaunch() {// 展示本地存儲能力const logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)// 登錄
wx.login({success: res => {// 發送 res.code 到后臺換取 openId, sessionKey, unionId}})},
globalData: {
userInfo: null,
appTheme: 'light', // 其他自定義全局變量}
})
2. 在頁面中使用全局變量
通過 getApp() 方法獲取全局應用實例,從而訪問或修改 globalData。
示例:
假設我們在頁面 index.js 中獲取和設置全局變量:
onLoad: function () {// 獲取全局變量const app = getApp();
console.log('當前主題:', app.globalData.appTheme);// 修改全局變量
app.globalData.appTheme = 'dark';
console.log('更新后的主題:', app.globalData.appTheme);},
重新編譯,看控制臺輸出:
由此,我們可以看到,是已經成功使用了全局變量。
3. 注意事項
●?數據同步性: 全局變量的修改對其他頁面立即生效,但如果其他頁面已經加載,可能需要手動刷新以同步最新數據。
●?大數據存儲: 不要將大量數據存儲在 globalData 中,可以將大數據存儲到本地(如 wx.setStorage 或 wx.setStorageSync)。
●?模塊化: 對于復雜的項目,建議將全局狀態管理抽離成單獨模塊(如使用 Redux、MobX 或者封裝自己的狀態管理工具)。
完整代碼:
通過網盤分享的文件:微信小程序的全局變量(quanjubianliang)
鏈接: https://pan.baidu.com/s/1rxzOP0uMVb5k50Ec-HLVNA?pwd=bebg 提取碼: bebg