uniApp:模板语法及生命周期

uni-app 数据绑定

和 vue 一样。

<template>
	<view> {{ msg }} </view>
</template>

<script>
export default {
	data() {
		return {
			msg: '数据绑定-msg的值'
		}
	}
}
</script>

指令

指令是带有 v- 前缀的特殊属性。
指令的作用是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

v-bind 属性绑定指令

v-bind 是属性绑定指令,可以简写成 :=''

<!-- 语法格式 -->
<a v-bind="变量名">动态链接地址</a>
<template>
	<view>
		<a :href='hrefUrl'>点击跳转到百度</a>
	</view>
</template>

<script>
export default {
	data() {
		return {
			hrefUrl: 'http://www.baidu.com'
		}
	}
}
</script>

v-for 列表渲染指令

v-for 是循环属性,可以遍历处理每一个属性,最后使用 :key 属性进行标识。
:key 唯一标识,保证数据不重复。

<template>
	<view>
		<view v-for="(item, index) in list" :key="index">
			序号:{{index}}, 姓名:{{item.name}}, 年龄:{{item.age}}
		</view>
	</view>
</template>

<script>
export default {
	data() {
		return {
			list: [
				{name: '张三', age: 18},
				{name: '李四', age: 19},
				{name: '王五', age: 20},
			]
		}
	}
}
</script>

v-on 注册事件和传递参数

实际开发中,将 v-on 替换为 @

<template>
	<view>
		<button type="default" v-on:click="clickHandle">按钮</button>
	</view>
</template>

<script>
export default {
	methods: {
		clickHandle() {
			console.log('点击我了')
		}
	}
}
</script>

生命周期

一个对象从创建、运行、销毁的整个过程被称为生命周期。
详情:Vue.js 生命周期

应用的生命周期函数

定义在 app.vue 中。

应用生命周期函数名说明
onLaunchuni-app
初始化完成时触发(全局只触发一次)。
onShowuni-app
启动,或从后台进入前台显示。
onHideuni-app
从前台进入后台。
onErroruni-app
报错时触发。
<script>
	export default {
		onLaunch: function() {
			console.log('App Launch')
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		},
        onError: function(err) {
			console.log('出现异常了', err)
		}
	}
</script>
  • 第一次打开 uni-app 时,触发 LaunchShow

    image-20211215213021519.png

  • 当切换当前浏览器窗口到别的页面,再切换回来时,触发 HideShow

    image-20211215213323904.png

  • 当出现异常时,触发 Error

    image-20211215213557053.png

页面的生命周期函数

定义在每个页面中。

页面生命周期函数名说明
onLoad监听页面加载,其参数为上个页面传递的数据,类型为 Object(用于页面传参)
onShow监听页面显示,页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面。
onReady监听页面初次渲染完成。
onHide监听页面隐藏。
onUnload监听页面卸载。
onPullDownRefresh监听用户下拉动作,一般用于下拉刷新。
onReachBottom页面滚动到底部事件(不是scroll-view 滚动到底部),常用与下拉下一页数据。
<script>
	export default {
		onLoad(options) {
			console.log('页面加载了', options)
		},
		onShow:function(){
			console.log('页面显示了')
		},
		onReady:function(){
			console.log('页面初次渲染完成')
		},
		onHide:function(){
			console.log('页面隐藏了')
		}
	}
</script>
  • 第一次打开 uni-app 时,触发 onLoadonShowonReady

    image-20211215214634771.png

  • 当切换当前浏览器窗口到别的页面,再切换回来时,触发 onHide 、 onShow 。

    image-20211215214853860.png

页面下拉刷新 onPullDownRefresh

方式一:通过下拉触发

在 js 中定义 onPullDownRefresh 处理函数,监听该页面用户下拉刷新事件。

  • pages.json 里,找到当前页面的 pages 节点,并在 style 选项中开启 enablePullDownRefresh
  • 当处理完数据刷新后,uni.stopPullDownRefresh 可以停止当前页面的下拉刷新。
<template>
	<view>
		<view v-for="item in list" :key='item'>
			{{item}}
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				list: ['html', 'css', 'ui', '测试', '后端']
			}
		},
        // 触发下拉刷新函数
		onPullDownRefresh: function(){
			console.log('触发了下拉刷新')
            
            // 延迟两秒刷新数据
			setTimeout(() => {
				this.list = ['HTML', 'CSS', 'UI', 'JAVA', 'Python']
				// 停止下拉刷新
				uni.stopPullDownRefresh()
			}, 2000)
		}
	}
</script>
方式二:通过配置文件开启
<!-- 开启下拉刷新 -->
uni.startPullDownRefresh()
<!-- 关闭下拉刷新 -->
uni.stopPullDownRefresh()
<template>
	<view>
		<view v-for="item in list" :key='item'>{{item}}</view>
		<button type="default" @click="pullDown">下拉刷新</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				list: ['html', 'css', 'ui', '测试', '后端']
			}
		},
		methods: {
			// 下拉刷新
			pullDown() {
				uni.startPullDownRefresh()
			}
		},
        // 触发下拉刷新函数
		onPullDownRefresh: function(){
			console.log('触发了下拉刷新')
            // 延迟两秒刷新数据
			setTimeout(() => {
				this.list = ['HTML', 'CSS', 'UI', 'JAVA', 'Python']
				// 停止下拉刷新
				uni.stopPullDownRefresh()
			}, 2000)
		}
	}
</script>

页面触底事件 onReachBottom

onReachBottom 页面触底。

<template>
	<view>
		<view class="box" v-for="(item, index) in list" :key='index'>
			{{item}}
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				list: ['html', 'css', 'ui', '测试', '后端']
			}
		},
		// 页面触底
		onReachBottom() {
			console.log('页面触底了')
			// 添加数据:模拟加载下一页数据
			this.list = [...this.list, ...['HTML', 'CSS', 'UI', 'JAVA', 'Python']]
		}
	}
</script>

<style>
    .box {line-height: 300rpx;}
</style>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: uniapp组件生命周期包括created、mounted、updated、destroyed等阶段。created阶段是组件实例被创建时触发,可以在这个阶段进行数据初始化等操作;mounted阶段是组件挂载到页面上时触发,可以进行DOM操作等操作;updated阶段是组件数据更新时触发,可以进行数据更新后的DOM操作等操作;destroyed阶段是组件实例被销毁时触发,可以进行清理操作等操作。 ### 回答2: uni-app是一种跨平台应用开发框架,它基于Vue.js,开发者可以使用Vue语法来构建应用。在uni-app中,组件生命周期分为创建、更新、销毁三个阶段。 1. 创建阶段: 组件创建时,会依次调用beforeCreate、created、beforeMount、mounted方法。 beforeCreate方法在实例创建之前被调用,此时组件实例还未初始化,不能访问组件的数据和方法。 created方法在实例创建完成后被调用,此时组件实例已经创建完成,可以访问组件的数据和方法。 beforeMount方法在组件挂载前被调用,此时模板已经编译完成,但未挂载到页面中。 mounted方法在组件挂载后被调用,此时组件已经添加到页面中,可以进行DOM操作。 2. 更新阶段: 组件更新时,会依次调用beforeUpdate、updated方法。 beforeUpdate方法在组件更新前被调用,此时数据已经更新,但DOM还未重新渲染。 updated方法在组件更新后被调用,此时组件已经重新渲染,可以进行DOM操作。 3. 销毁阶段: 组件销毁时,会调用beforeDestroy、destroyed方法。 beforeDestroy方法在组件销毁前被调用,此时组件实例还存在,可以进行善后操作。 destroyed方法在组件销毁后被调用,此时组件实例已经被销毁,无法再访问组件的数据和方法。 组件生命周期的作用是在不同阶段进行相应的操作,如在created阶段进行数据初始化,在mounted阶段进行DOM操作,在destroyed阶段进行资源释放等,以确保组件的正常运行和优化性能。 ### 回答3: uni-app 是一款基于 Vue 实现的跨平台开发框架,用于开发 iOS、Android、华为、微信小程序、支付宝小程序等多个平台的应用。uni-app 的组件生命周期包含以下几个阶段: 1. beforeCreate:在实例初始化之后,数据观测和事件配置之前调用,此时还无法访问到组件实例的 data 和 methods 等属性。 2. created:在实例创建完成后调用,此时可以访问到组件实例的 data 和 methods 属性,并可以进行一些初始化的操作。 3. beforeMount:在组件挂载到页面之前调用,此时组件的模板已经编译完成,但尚未挂载到页面上。 4. mounted:在组件挂载到页面后调用,此时组件已经渲染到页面上,并且可以进行一些 DOM 操作。 5. beforeUpdate:在组件更新之前调用,此时组件的 data 数据已经发生变化,但尚未重新渲染页面。 6. updated:在组件更新之后调用,此时组件的 data 数据已经更新,并且页面已经重新渲染。 7. beforeDestroy:在组件销毁之前调用,此时组件实例仍然可用,并可以进行一些清理工作。 8. destroyed:在组件销毁之后调用,此时组件实例已经被销毁,事件监听和数据绑定都已解除。 需要注意的是,在父组件销毁时,子组件的生命周期也会跟随父组件的销毁而终止。 组件生命周期的不同阶段提供了不同的钩子函数,可以通过钩子函数来执行一些特定的逻辑代码或操作,以满足实际的业务需求。比如在 created 钩子函数中进行接口请求、在 mounted 钩子函数中进行 DOM 操作等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤安先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值