uni-app常用操作

1、跳转页面。

uni.navigateTo({
    url: '/pages/login/index?navback=1'
});
//传递多个参数例子
uni.navigateTo({
        url: '/mall/shopcart/productDetail?id=' + id + '&merchantId=' + ids.merchantId +
        '&priceStr=' + priceStr + '&name=' + name + '&power=' + this.power +
        "&powerId=" +
        this.powerId + '&picUrl=' + picUrl + '&isMall=' + this.isMall
})

//回传
let pages = getCurrentPages()
let prevPage = pages[pages.length -2] 
prevPage.$vm.getSelectObjValue(this.ids) 
uni.navigateBack({delta:1})

//获取返回参数方法
getSelectObjValue(val) {
}

Back(){
    //uni.navigateBack()//默认delta:1
    uni.navigateBack({
        delta:1,//返回层数,2则上上页
    })
},

2、获取跳转参数

onLoad(options) {
   let id = options.id
}

3、页面声明周期

onLoad(){
}
onShow(){
}
onHide(){
}
onUnload(){
}

4、获取当前时间

this.startTime = Date.now();

5、本地数据的存储

//取出
uni.getStorageSync('userInfo');
//保存
uni.setStorageSync('userInfo', true);
//删除
uni.removeStorage('userInfo')
//异步获取结果
uni.getStorage({
    key: 'userMerchant',
    success: function(res) {
    }
})

6、安卓app权限操作
例如获取定位权限时,弹出请求权限弹框,被拒绝后弹出引导开启权限弹框。

//可到uni-app官方demo中拷贝该文件
// #ifdef APP-PLUS
import permision from "@/common/permission.js"
// #endif
                    let status = await this.checkPermission();
                    if (status !== 1) {
                        return;
                    }
                    uni.getLocation({
                        type: 'gcj02',
                        success: function(res) {
                            console.log(res.latitude);
                            this.lat = res.latitude
                            this.lng = res.longitude
                            uni.navigateTo({
                                url: '../store/choose-location?pagetype=index&lat=' + this.lat + '&lng=' +
                                    this.lng
                            })
                        }
                    });
            async checkPermission() {
                let status = permision.isIOS ? await permision.requestIOS('location') :
                    await permision.requestAndroid('android.permission.ACCESS_FINE_LOCATION');
            
                if (status === null || status === 1) {
                    status = 1;
                } else if (status === 2) {
                    uni.showModal({
                        content: "系统定位已关闭",
                        confirmText: "确定",
                        showCancel: false,
                        success: function(res) {
                        }
                    })
                } else if (status.code) {
                    uni.showModal({
                        content: status.message
                    })
                } else {
                    uni.showModal({
                        content: "需要定位权限",
                        confirmText: "设置",
                        success: function(res) {
                            if (res.confirm) {
                                permision.gotoAppSetting();
                            }
                        }
                    })
                }
                return status;
            }

在提交应用市场时,对权限检测很严格,uniapp在manifest中可以配置启动时获取权限,我们需要关闭。request改为none。


image.png

7、vue动态样式

<view :class="status == 1?'top':'top1'" @click="show = true">

<style>
   .top{
      xxx
    }
   .top1{
     xxx
   }
</style>

8、uniapp中使用iconfont图标。
参考:【小程序开发】uniapp引入iconfont图标及使用方式_uniapp icon-CSDN博客
操作完后需要重启项目

9、uniapp使用vuex的store
步骤一:在项目添加store文件夹,然后定义index.js文件


image.png
import Vue from 'vue'
import Vuex from 'vuex'
import $mRoutesConfig from '@/config/routes.config.js'
import $mRouter from '@/common/router.js'

const TOKEN = uni.getStorageSync("token") || "";
const OPENID = uni.getStorageSync("openId") || "";
const USER_INFO = uni.getStorageSync("userInfo") || {};
const CUSTOMER_INFO = uni.getStorageSync("customerInfo") || {};
const taskCategory = uni.getStorageSync("taskCategory") || {};
const DIRECTMERCHANT = uni.getStorageSync("directMerchant") || {}
const WXPAYENABLE = uni.getStorageSync("wxPayEnable") || ""

Vue.use(Vuex)
import api from '@/util/api'

const store = new Vuex.Store({
    modules: {},
    plugins: [
        // createPersistedState({
        //  storage: plus.storage
        // })
    ],
    state: {
        lastTime: new Date().getTime(),
        lb: false,
        show: true,
        PK2: 'QUAA4GNADCBiQKBgQCmQ',
        hasLogin: false,
        appAd: 'uni',
        //userInfo: {},
        // 是否強制登录
        forcedLogin: true,
        // 前端token
        token: TOKEN,
        // 用户信息 头像 昵称
        userInfo: USER_INFO,
        // 用户的商户信息
        customerInfo: CUSTOMER_INFO,

        operatingSystem: '',

        requestList: [], // 网络请求队列

        goodsCartList: [], // 自营购物车列表
        goodsCartTotal: {}, // 自营购物车总数
        taskCategory: taskCategory, // 任务类目
        directMerchant: DIRECTMERCHANT, //被锁的人的上级信息
        plantInfo: {}, //工厂商户信息
        wxPayEnable: WXPAYENABLE,
        // tabbar:TABBARs  ,
        tabbar: [{
                pagePath: "/pages/home/index",
                iconPath: "/static/tabBar/home.png",
                selectedIconPath: "/static/tabBar/home-active.png",
                text: "首页"
            },
            {
                pagePath: "/pages/sort/index",
                iconPath: "/static/tabBar/category.png",
                selectedIconPath: "/static/tabBar/category-active.png",
                text: "分类"
            },
            {
                pagePath: "/pages/store/index",
                iconPath: "/static/tabBar/shop.png",
                selectedIconPath: "/static/tabBar/shop-active.png",
                text: "门店"
            },
            {
                pagePath: "/customerService/list/list",
                iconPath: "/static/tabBar/cart.png",
                selectedIconPath: "/static/tabBar/cart-active.png",
                text: "购物车"
            },

        ],
        tabbar2: [{
                "pagePath": "/pages/home/index",
                "iconPath": "/static/tabBar/home.png",
                "selectedIconPath": "/static/tabBar/home-active.png",
                "text": "首页"
            },
            {
                "pagePath": "/pages/sort/index",
                "iconPath": "/static/tabBar/category.png",
                "selectedIconPath": "/static/tabBar/category-active.png",
                "text": "分类"
            },

            {
                "pagePath": "/pages/store/index",
                "iconPath": "/static/tabBar/shop.png",
                "selectedIconPath": "/static/tabBar/shop-active.png",
                "text": "门店"
            },

            {
                "pagePath": "/customerService/list/list",
                "iconPath": "/static/tabBar/news.png",
                "selectedIconPath": "/static/tabBar/news-active.png",
                "text": "消息",
                count: 0,
            },
            {
                "pagePath": "/pages/my/index",
                "iconPath": "/static/tabBar/user.png",
                "selectedIconPath": "/static/tabBar/user-active.png",
                "text": "我的",
            }
        ],
        tabbar3: [{
                "pagePath": "/pages/home/index",
                "iconPath": "/static/tabBar/home.png",
                "selectedIconPath": "/static/tabBar/home-active.png",
                "text": "首页"
            },
            {
                "pagePath": "/pages/sort/index",
                "iconPath": "/static/tabBar/category.png",
                "selectedIconPath": "/static/tabBar/category-active.png",
                "text": "分类"
            },

            {
                "pagePath": "/customerService/list/list",
                "iconPath": "/static/tabBar/news.png",
                "selectedIconPath": "/static/tabBar/news-active.png",
                "text": "消息",
                count: 0,
            },
            {
                "pagePath": "/pages/my/index",
                "iconPath": "/static/tabBar/user.png",
                "selectedIconPath": "/static/tabBar/user-active.png",
                "text": "我的",
            }
        ]
    },
    getters: {
        // 用户是否登录
        hasLogin: state => {
            if (state.token && state.userInfo) {
                return true;
            } else {
                return false
            }
        }
    },
    mutations: {
        lastTimeUpdata: (state, lastTime) => {
            console.log("lastTimeUpdata")
            state.lastTime = lastTime;
        },
        getShow(state, data) {
            state.show = data
        },
        setlb(state, data) {
            state.lb = data
        },
        login(state, provider) {
            state.hasLogin = true;
            state.userInfo = provider;
            uni.setStorage({ //缓存用户登陆状态
                key: 'userInfo',
                data: provider
            })
        },
        logout(state) {
            state.hasLogin = false;
            state.userInfo = {};
            uni.removeStorage({
                key: 'userInfo'
            })
        },
        SET_TOKEN(state, token) {
            state.token = token;
            uni.setStorageSync("token", token);
        },
        SET_OPENID(state, openId) {
            state.openId = openId;
            uni.setStorageSync("openId", openId);
        },
        SET_USERINFO(state, userInfo) {
            let data = Object.assign(state.userInfo, userInfo)
            state.userInfo = data;
            uni.setStorageSync("userInfo", data);
        },
        //没用到,先留着
        SET_PLANTINFO(state, plantInfo) {
            let data = Object.assign(state.plantInfo, plantInfo)
            state.plantInfo = data;
            uni.setStorageSync("plantInfo", data);
        },
        SET_CUSTOMERINFO(state, customerInfo) {
            state.customerInfo = customerInfo;
            uni.setStorageSync("customerInfo", customerInfo);
        },
        SET_LOGOUT(state) {
            state.token = "";
            state.userInfo = {}
            uni.setStorageSync("userInfo", {});
            uni.setStorageSync("token", "");
        },
        SET_APPAD(state, appAd) {
            state.appAd = appAd;
            uni.setStorageSync("appAd", appAd);
        },
        UPDATA_GOODS_CART(state) {
            let mobile = state.userInfo.mobile || ''
            if (mobile) {
                let obj = {
                    mobile
                }
                getWlkIndex(state, obj)
            }
        },
        SET_CART_TOTAL(state, list) {
            state.goodsCartTotal = list;
        },
        SET_GOODS_CART(state, list) {
            state.goodsCartList = list;
        },
        SET_TASK_CATEGORY(state, list) {
            state.taskCategory = list;
            uni.setStorageSync("taskCategory", list);
        },
        SET_MERCHANT(state, list) {
            state.directMerchant = list
            uni.setStorageSync("directMerchant", list);
        }

    },
    actions: {
        // 登录过期 重新登录
        reLogin({
            commit
        }, info) {
            commit("SET_TOKEN", "");
            $mRouter.redirectTo({
                route: $mRoutesConfig.login
            });
        }

    }
})

export default store

步骤二:
引入

import {mapState} from 'vuex';

computed: {
    ...mapState(['userInfo','plantInfo']),
    tabbar: function() {
        if (this.isShoppingGuide) {
            return this.$store.state.tabbar
        } else {
              if (this.isNoLogin) {
                return this.$store.state.tabbar3
             } else {
                return this.$store.state.tabbar2
             }

        }
        },
}

this.$store.commit("SET_USERINFO", userInfo || {});

10、全局常量
在main.js文件中

//定义如下
Vue.prototype.img_src = 'https://xxxxx.oss-cn-shenzhen.aliyuncs.com/'
uni.img_src = 'https://xxxx.oss-cn-shenzhen.aliyuncs.com/'
//data域中引入
data() {
    return {img_src: this.img_src}
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容