//app.js
const globalData=require('./store/index')
App({
onLaunch: function () {
console.log(globalData.globalData);
// 展示本地存储能力
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
}
})
// 获取用户信息
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
wx.getUserInfo({
success: res => {
// 可以将 res 发送给后台解码出 unionId
this.globalData.userInfo = res.userInfo
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
}
})
}
}
})
},
globalData: {
userInfo: null,
...globalData.globalData
}
})
这是在app.js中引入封装的store
module.exports={
globalData:{
userpwd:123456,
historylist:['麻辣烫'],
orderlist:[
{
image:'http://p0.meituan.net/168.0.80/waimaipoi/ea39cf8507bd8193fd029842bb6d05af38659.jpg@80w_80h_1e_1c.webp',
title: "塔哈尔新疆盛宴·烧烤(北京国瑞店)",
productlist:[
{
product:'[鱼跃]玻璃体温计CRW-11(三角型棒式口腔性)',
count:1
}
],
sumproduct:100
}
]
}
}
这是index.js即初始化store中的数据,或者保存默认值
var app=getApp();
class Store{
get userpwd(){
return app.globalData.userpwd
}
set userpwd(value){
app.globalData.userpwd=value
}
//获取和赋值历史搜索数据
get historylist(){
return app.globalData.historylist
}
set historylist(value){
app.globalData.historylist=value
}
//赋值和获取我的订单
get orderlist(){
return app.globalData.orderlist
}
set orderlist(value){
app.globalData.orderlist=value
}
}
const store=new Store();
export default store;
通过es6中的类创建get方法和set方法,创建Store实例,通过export default导出,在页面中通过import接收
import store from './../../store/store'
onLoad: function (options) {
console.log(options);
// this.search(options.con);
this.setData({
historylist:store.historylist
})
},
onClickHot(e){
this.search('res')
let target=e.currentTarget.dataset.item,list=this.data.historylist;
this.setData({
innersearch:target
})
list.push(target);
this.setData({
historylist:list
})
store.historylist=list
},
通过store.的方式进行取值和赋值
2.路由的封装
在根目录下创建router文件夹,文件夹下创建router.js和index.js,router.js定义路由字典,index封装条状方法,push等
module.exports={
search:'/pages/search/search',
shoplist:'/pages/shoplist/shoplist'
}
const routes=require('./router');
export function push(name,data={}){
const querystr=Object.keys(data).map(n=>`${n}=${data[n]}`).join('&');
wx.navigateTo({
url: routes[name]+'?'+querystr
})
}
可以继续封装wx.redirectTo方法wx.switchTab方法等
3.通过import导入push方法,传递定义的路由,传递数据参数
import {push} from './../../router/index'
Component({
options: {
multipleSlots: true
},
properties:{
storeInfo:{
'type':Object,
'value':null
}
},
data:{
},
methods: {
togglesele(){
this.setData({
isActive: !this.data.isActive
})
},
detailpage(e){
push('shoplist',e.currentTarget.dataset.info)
}
}
})