uniapp 微信小程序
官网:
- uniapp文档
- 微信小程序文档
- vue2文档
- vue3文档
单位
单位 | 描述 |
---|---|
rpx |
小程序中使用, 750rpx = 屏幕宽度 |
vw/vh |
h5的单位, 100vw = 屏幕宽度, 100vh = 屏幕的高度 |
图像
官网: image
image的mode一般有:
mode | 描述 |
---|---|
heightFix | 高度不变,宽度自动变化,保持原图宽高比不变 |
widthFix | 宽度不变,高度自动变化,保持原图宽高比不变 |
aspectFit | 保持纵横比缩放图,可以完整地将图片显示出来。 |
aspectFill | 保持纵横比缩放图片,只保证图片的短边能完全显示出来 |
导航
- 方法内:
官网: 路由与页面跳转uni.navigateTo({ url: "/pages/xxx/index" })
template
内
官网: 路由与页面跳转
绑定触底事件
即, 下拉到底部时, 触发自定义的事件, 动态获取数据.
-
页面部分滚动
假如
scroll-view
的display为flex时, 需要添加enable-flex
属性 -
页面全部滚动
轮播图
一般需要指定三个属性
autoplay
自动播放indicator-dots
指示器circular
衔接轮播
注: swiper-item
的高度和宽度都为100%
,
分段器
即tab
使用scss
安装依赖
由于安装node-sass
提示错误, 所以替换了:
"sass": "^1.26.5",
"sass-loader": "^8.0.2",
"style-resources-loader": "^1.4.1",
或:
存储数据
-
app.globalData
// 设置 getApp().globalData.data = {} // 获取 const data = getApp().globalData.data
-
vuex
uniApp
内已经内嵌了vuex
第一步: 定义 ./stor/index.jsimport Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex); export default new Vuex.Store({ state: { hasLogin: false, // 登录状态 userInfo: {}, // 用户信息 }, mutations: { setHasLogin(state, value){ state.hasLogin = value console.log(state.hasLogin) } }, actions: {}, getters: {} })
第二步: 在
mian.js
中挂载store
import Vue from 'vue' import App from './App' import store from './store' Vue.config.productionTip = false Vue.prototype.$store = store App.mpType = 'app' const app = new Vue({ ...App, store, }) app.$mount()
第三步: 使用
vuex
// 获取state中的值 this.$store.state.loginStatus // 修改state中的值 this.$store.commit('setHasLogin', true); // 调用actions中的方法 // 要在actions中定义方法 this.$store.dispatch('',{number:123}) // 调用getters中的方法 // 要在getters中定义方法 this.$store.getters.reverseLoginStatus
-
uni.setStorage/uni.getStorage
见: 数据缓存
生命周期钩子函数
有三类:
APP.vue
生命周期:
函数名 | 说明 |
---|---|
onLaunch |
当uni-app 初始化完成时触发(全局只触发一次) |
onShow |
当uni-app 启动,或从后台进入前台显示 |
onHide |
当uni-app 从前台进入后台 |
onError |
当uni-app 报错时触发 |
pages/xxx/index.vue
生命周期:
函数名 | 说明 |
---|---|
onLoad |
监听页面加载,其参数为上个页面传递的数据 |
组件生命周期
函数名 | 说明 |
---|---|
beforeCreate |
在实例初始化之后被调用 |
created |
在实例创建完成后被立即调用 |
beforeMount |
在挂载开始之前被调用 |
mounted |
挂载到实例上去之后调用 |
beforeUpdate |
数据更新时调用,发生在虚拟 DOM 打补丁之前 (仅H5平台支持) |
updated |
由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子 (仅H5平台支持) |
beforeDestroy |
实例销毁之前调用 |
destroyed |
Vue 实例销毁后调用 |
封装request
// 封装自定义请求
export default (params) => {
return new Promise((resolve, reject) => {
// 加载中
uni.showLoading({
title: "加载中...",
});
wx.request({
...params,
success(res) {
// .data => 服务器返回的数据
resolve(res.data); // 成功
},
fail(err) {
reject(err); // 失败
},
complete() {
// 完成请求时
// 隐藏loading
uni.hideLoading();
},
});
});
};
在main.js
中:
import Vue from "vue";
import App from "./App";
import request from "./utils/request";
Vue.config.productionTip = false;
Vue.prototype.request = request;
App.mpType = "app";
const app = new Vue({
...App,
});
app.$mount();
使用时:
this.request({
url: "http://xxxx",
data: {}
})
登录组件
申请获取以下权限
获得你的公开信息(昵称,头像、地区等)