uniapp 遇到的问题

uniapp开发遇到的问题记录

1.uniapp不能使用浏览器对象

在uniapp开发中 使用window、document等浏览器对象不会生效,存在这些的话uniapp将无法打包成功,最好使用 uniapp官方的api

2.网络请求最好使用uni.request()

小编在项目中使用axios,打包后axios失效 无法发送请求,查资料未果;
果断选择了 uview ui框架的http
写uniapp是 uview这个框架也是不错的选择

3.页面字体适配

在uniapp中 不推荐使用rem,官方有自己的rpx单位也相对实用,
如果你就想使用rem来写uniapp的话,下面就是众多实现方法中的一种适配方案

1.在mian.js 挂载$fontSize变量
import Vue from 'vue'
//import uView from "uview-ui";
uni.getSystemInfo({
	success:(res)=>{
		// console.log(res)
		// console.log(res.screenWidth)
		// console.log(res.screenWidth/750*75)
		// console.log(app,'999')
		getApp().globalData.fontSize = res.screenWidth/750*75
	}
})
Vue.prototype.$fontSize = getApp().globalData.fontSize
//主要通过uni.getSystemInfo 来获取当前使用设备的各项参数,
//要调整屏幕的适配 首先要知道当前设备的型号 及屏幕大小
2.通过 page-meta 标签来实现 样式的赋值 page-meta 资料
//在相应的页面上添加

<page-meta :root-font-size="fontSize + 'px'"></page-meta>

// uniapp 只有app.vue为入口文件  没有结构代码 只能在各个页面上添加  
//如果你写的是H5的话 可以再index.html中添加设置rem的根页面Font-size大小

在使用page-meta要注意 这个是新加的 有版本要求的

4. 关于页面后退 并刷新页面

uni.navigateBack({
	success: function() {
		console.log('已回退', getCurrentPages())
		const pages = getCurrentPages()
		let page = pages[Math.max(pages.length - 1 - 1, 0)]
		// page.onLoad(page.options)
		page.lianxiren()
		// console.log(page,'66')
	}
})

也可以

//app端 小程序端 getCurrentPages获取的参数有些不同
var pages = getCurrentPages();
var currPage = pages[pages.length - 1];   //当前页面
var prevPage = pages[pages.length - 2];  //上一个页面
//console.log(prevPage ); //按照打印结构这样赋值虽然成功但页面数据不会修改
// prevPage.data.$root[0].title = 'Hello World'
prevPage.setData({
	title: 'Hello World'
})
uni.navigateBack()

4. 事件监听的触发时机

//uni.$emit()传值和uni.$on()接收
//A页面, onShow中添加监听一个handleFun的事件
onShow(){
    uni.$on("handleFun", res => {
        this.title = res.title;
        // 清除监听
        uni.$off('handleFun');
    })
},

//B页面, 返回A页面触发一个事件,使用uni.$emit("handleFun",{})
getAddress(){
    uni.$emit("handleFun",{title: 'Hello World'});
    uni.navigateBack()
}

posted @ 2021-08-25 19:18  xiao旭  阅读(1744)  评论(0编辑  收藏  举报