#Uniapp篇:变量&v-if 和 v-show 区别&.sync 修饰符&宽屏适配指南&Pinia内置了

let that = this

如果在某些methods中this被指向了其他内容,则需要提前把this赋值给另一个变量,比如let that = this。

复制代码
<script>
	export default {
		data() {
			return {
				connectedWifi:""
			}
		},
		methods: {
			buttonClick: function () {
				const that = this // 下面的this指向会变化,另存一下
				uni.startWifi({
					success: function() {
						uni.getConnectedWifi({
							success: function(res) {
								const { wifi } = res
								that.connectedWifi = JSON.stringify(wifi)
							},
							fail: function(res) {
							}
						})
					},
					fail: function(res) {
					}
				})
			},
		}
	}
</script>

v-if 和 v-show 区别

v-if 是"真正"的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。

v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做,直到条件第一次变为真时,才会开始渲染条件块。

相比之下,v-show 就简单得多,不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换,来控制元素的显示和隐藏。

根据应用场景选择

v-if 有更高的切换开销,如果在运行时条件很少改变,则使用 v-if 较好。

v-show 有更高的初始渲染开销。如果需要非常频繁地切换,则使用 v-show 较好。
注意

不推荐同时使用 v-if 和 v-for。

当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级。

###在 v-for 里使用对象

你也可以用 v-for 来遍历一个对象的 property。

第一个参数 value 是被迭代的对象元素的属性值。

第二个参数为 property 名称 (也就是键名)。

第三个参数作为索引。

复制代码
	<template>
		<view>
			<view v-for="(value, name, index) in object">
				 {{ index }}. {{ name }}: {{ value }}
			</view>
		</view>
	</template>
	<script>
		export default {
			data() {
				return {
					object: {
						title: 'How to do lists in Vue',
						author: 'Jane Doe',
						publishedAt: '2020-04-10'
					}
				}
			}
		}
	</script>

.sync 修饰符

当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定。 .sync 它会被扩展为一个自动更新父组件属性的 v-on 监听器。

复制代码
	<!-- 父组件 -->
	<template>
		<view>
			<syncA :title.sync="title"></syncA>
		</view>
	</template>
	<script>
		export default {
			data() {
				return {
					title:"hello vue.js"
				}
			}
		}
	</script>

	<!-- 子组件 -->
	<template>
		<view>
			<view @click="changeTitle">{{title}}</view>
		</view>
	</template>
	<script>
		export default {
			props: {
				title: {
					default: "hello"
				},
			},
			methods:{
				changeTitle(){
					//触发一个更新事件
					this.$emit('update:title',"uni-app")
				}
			}
		}
	</script>

在 Vue 中,.sync修饰符是一种语法糖,用于父子组件之间的双向数据绑定。当子组件通过$emit('update:title', "uni-app")触发更新事件时,父组件会自动更新绑定的title数据。

在你的父组件中,不需要显式地接收回调,因为.sync修饰符已经自动处理了这个过程。当子组件触发更新事件时,父组件的title数据会自动更新为"uni-app"。

如果你想在父组件中观察这个变化,可以在父组件的watch选项中添加对title的观察:

复制代码
<template>
  <view>
    <syncA :title.sync="title"></syncA>
  </view>
</template>

<script>
export default {
  data() {
    return {
      title: "hello vue.js",
    };
  },
  watch: {
    title(newValue) {
      console.log('Title updated:', newValue);
    },
  },
};
</script>

component 动态组件

https://v2.cn.vuejs.org/v2/api/#component

Pinia uniapp内置了

https://uniapp.dcloud.net.cn/tutorial/vue3-pinia.html

条件编译

https://uniapp.dcloud.net.cn/tutorial/platform.html

宽屏适配指南

https://uniapp.dcloud.net.cn/tutorial/adapt.html

相关推荐
2501_915921431 小时前
Bundle Id 创建与管理的工程化方法,一次团队多项目协作中的流程重构
服务器·ios·小程序·重构·https·uni-app·iphone
2501_915909063 小时前
深度解析 iOS 内存占用,构建多工具协同的内存诊断、监控与优化体系
android·ios·小程序·https·uni-app·iphone·webview
q_19132846954 小时前
基于Springboot2+Vue2+uniapp的单商家在线点餐外卖小程序
vue.js·spring boot·mysql·小程序·uni-app·计算机毕业设计
2501_915918414 小时前
iOS CPU 使用率深度分析,多工具协同定位高占用瓶颈的工程化方法
android·ios·小程序·https·uni-app·iphone·webview
2501_915106325 小时前
如何防止资源文件被替换?一套针对 iOS App 的多层资源安全方案
android·安全·ios·小程序·uni-app·iphone·webview
2501_915918415 小时前
IPA 一键加密工具的真实工程化实践 构建可自动化、可扩展的 iOS 应用安全体系
android·安全·ios·小程序·uni-app·自动化·iphone
你真的可爱呀10 小时前
uniapp+vue3项目中的常见报错情况以及解决方法
前端·vue.js·uni-app
郑州光合科技余经理13 小时前
同城系统海外版:一站式多语种O2O系统源码
java·开发语言·git·mysql·uni-app·go·phpstorm
博客zhu虎康14 小时前
uniApp 开发
arcgis·uni-app
郑州光合科技余经理17 小时前
基于PHP:海外版同城O2O系统多语言源码解决方案
java·开发语言·git·spring cloud·uni-app·php·uniapp