【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握

这篇具有很好参考价值的文章主要介绍了【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

课程地址:【新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握】 https://www.bilibili.com/video/BV1mT411K7nW/?p=12&share_source=copy_web&vd_source=b1cb921b73fe3808550eaf2224d1c155

四、vue组件

uni-app官网【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

组件,无论是小程序还是vue,都是非常关键的。

现在单页面程序,主要的依据就是组件。

组件的概念,可以将App.vue当做主组件,下面的vue文件都是若干个小组件。

component,小组件,可以公用。

组件优点:

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

4.1 easycom自动导入自定义组件

组件的注册

全局注册(需要挂载到vue里,适用于页面头部和底部十分公用的部分)和局部注册(写vue文件时局部注册用的较多)

局部注册

局部注册之前,在需要引用该组件的页面,导入你想使用的组件。

页面引入组件方式

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

4.1.1 介绍

2 通过uniapp的easycom。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html4.1.2 具体实现

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

步骤1:在项目demo1右键,创建components目录

步骤2:创建组件,如图。 

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

创建组件成功。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

步骤3:自定义组件

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

步骤4:使用组件

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

效果

使用自定义组件生效。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

4.2 子组件通过Prop接收父组件传过来的值

创建一个名为pubTitle的公共组件,到components文件夹下。自定义组件pubTitle。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

<template>
	<view class="pubTitle">
		<view class="big">文章的标题</view>
		<view class="small">副标题</view>
		<view class="line"></view>
	</view>
</template>

<script>
	export default {
		name:"pubTitle",
		data() {
			return {
				
			};
		}
	}
</script>

<style lang="scss">
.pubTitle {
	padding: 60rpx 30rpx;
	text-align: center;
	.big {
		font-size: 50rpx;
		font-weight: 700;
		color: #333;
	}
	.small {
		font-size: 28rpx;
		color: #888;
	}
	.line {
		display: inline-block;
		width: 80rpx;
		height: 8rpx;
		background: #1aa034;
		border-radius: 10rpx;
	}
}
</style>

在index首页里引入公共组件pubTitle。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

注意:这里index使用的公共组件pubTitle也可以转为短横线连接的,即pub-title。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

4.2.1 动态标题

uni-app官网

在index首页,list新闻列表页和about关于我们页,都是用了pubTitle公共组件。

标题显示的内容都是一样的,如下图。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

现在想动态显示不同页面的标题。

uni-app官网

Prop传值

步骤① 在子组件里接收属性。如图,在pubTitle子组件里接收title属性。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

步骤②,在父组件里传入属性值。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

效果

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

副标题同理,

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

4.2.2 props绑定动态值及数据类型默认值

这里是在template里设置的标题

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

 要绑定js里的值,那么就要绑定动态值,首先在data里定义text。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

然后给子组件传属性值的地方绑定该属性值,

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

vue官网介绍的Props,Props | Vue.js

数据类型默认值,将props由数据改为对象,可以设置props绑定的值的默认类型。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

不同数据类型默认形式

        props: {
			title: {
				type: String,
				default: "默认标题"
			},
			subtitle: {
				type: String,
				default: "默认副标题"
			},
			time: {
				type: Number,
				default: Date.now()
			},
			list: {
				type: Array,
				default() {
					return [1, 2, 3];
				}
			},
			obj: {
				type: Object,
				default() {
					return {name: '无名氏', gender: '3'};
				}
			}
		},

4.3 emit子向父组件传值

子组件pubTitle向父组件传值。

新建一个myevent组件,然后在about里引入。about是父组件,myevent是子组件。

父组件向子组件传值(4.2节的内容,复习一下)。

步骤1:定义要传的值的具体值;

步骤2:调用子组件。

步骤3:传入要传的值。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

子组件接收父组件传来的值。

步骤1:通过props接收父组件传来的值,可以设置默认类型等。

步骤2:在template中使用接收的值。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

子组件向父组件传值。

input | uni-app官网。inpout的@input事件。只要输入框改变,就会触发input事件

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

子组件一般不会进行数据处理,都会将数据交给父组件去处理。

步骤1:给子组件绑定input事件

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

步骤2:通过事件处理函数将input输入框的内容传给父组件。通过this.$emit方法传递,第一个参数是自定义的方法名,第2个参数是要传递的值。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

步骤3:父组件接收子组件传来的值

父组件绑定自定义事件,这里的自定义事件与子组件的自定义方法名同名。然后在事件处理函数里接收子组件传来的值。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

 4.4 事件修饰符

4.4.1 native修饰符

问题:给自定义组件添加click事件,无法触发。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

如果要自定义组件也执行原生的事件,需要加上.native修饰符,这样才会被认为是原生事件,否则会被认为是自定义事件,如下。

<myevent title="组件间的传值" @myvalue="onmyvalue" @click.native="onClick"></myevent>

4.4.2 父子间通信传值案例

父组件里点击一个按钮,弹出一个弹窗,弹窗有一个关闭按钮,点击弹窗的关闭按钮可以关闭弹窗,父组件就看不到弹窗了。

新建一个组件。

子组件接收的从父组件传来的值,最好不要改变。父组件传给子组件的值,不允许在子组件里修改。因为这个值是响应式的,因此如果在子组件修改了这个值,可能父组件会产生不同步的数据。

正常实现

父组件about.vue

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

子组件mypop.vue

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

缺点:值传来传去的很麻烦。但是这个方式也是需要了解的。

4.4.3 sync修饰符

uni-app官网

对4.4.2案例来回传值进行简化。

方案一:

父组件

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

子组件

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

但是我本地运行出错,不知道为什么。就这样吧,下一个。

进一步简化:

直接给要传的值加一个修饰符sync(代表响应式的修饰符),代表数据是可以响应的。接收子组件传值的自定义事件可以删掉。

理解:将sync修饰符理解为v-model,实现父组件改变值对子组件进行响应,同时子组件改变值也会对父组件进行响应。

父组件

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

子组件,不做任何处理,维持原样。

【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握,前端,javascript,html

全部代码

父组件

<template>
	<view>
		<myevent :title="title" @myvalue="onmyvalue"></myevent>
		
		<pubTitle></pubTitle>
		<pub-title></pub-title>
		<text>关于我们</text>
		<myevent title="组件间的传值" @myvalue="onmyvalue" @click.native="onClick"></myevent>
		-----------------------------
		<button @click="onClickBtn" >开启</button>
		<!-- <mypop :state="state" @stateEnv="onStateEnv"></mypop> -->
		<mypop :state.sync="state"></mypop>
		
	</view>
</template>
<script>
	export default {
		data() {
			return {
				title: "组件间的传值",
				state: false
			};
		},
		methods: {
			onmyvalue(e) {
				console.log(e);
			},
			onClick() {
				console.log(123);
			},
			onClickBtn() {
				this.state = true;
			}
		}
	}
</script>

<style lang="scss">

</style>

子组件

<template>
	<view>
		<view>----弹出框样式-----</view>
		<view class="box" :style="{height: state?'300px':'0'}"></view>
		<button size="mini" @click="onClickBtn">关闭</button>
	</view>
</template>
<script>
	export default {
		name:"mypop",
		data() {
			return {
				
			};
		},
		props: {
			state: {
				type: Boolean,
				default: false
			}
		},
		methods: {
			onClickBtn() {
				this.$emit("update:state", false);
			}
		}
	}
</script>

<style lang="scss">
.box {
	width: 300px;
	height: 300px;
	background-color: pink;
}
</style>

自己悟一悟。

4.5 生命周期

全局配置 | uni-app官网文章来源地址https://www.toymoban.com/news/detail-807636.html

到了这里,关于【b站咸虾米】chapter4_vue组件_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RocketMQ集成Springboot --Chapter4

    rocketMQTemplate.syncSend(“helloTopicBoot”,msg,3000,3); 3000为等待消息回传时间,如果3000毫秒还没有回传即发送错误信息, 3为延时消费的时间

    2024年02月16日
    浏览(41)
  • 咸虾米之一些快捷方式的操作,一行方块的左右滑动,方块在一区域内的任意移动

    由于本着只学习微信小程序的目的,上面的几篇博文都是跟着黑马程序的课程走的!后面的就讲解uni-app的实验呢!一个人的精力是有限的,于是换了们课程继续深造微信小程序!!!     以下是在 .wxml中的一些  以下是view三层嵌套的快捷操作方式! .box.inner.row 最外层是 c

    2024年02月11日
    浏览(42)
  • 我用ChatGPT写2023高考语文作文(三):新课标I卷

    2023年 新课标I卷 适用地区:山东、福建、湖北、江苏、广东、湖南、河北、浙江 好的故事,可以帮我们更好地表达和沟通,可以触动心灵、启迪智慧;好的故事,可以改变一个人的命运,可以展现一个民族的形象……故事是有力量的。 以上材料引发了你怎样的联想和思考?

    2024年02月08日
    浏览(46)
  • 使用chatGPT完成2023全国高考新课标 I 卷作文

           写作:阅读下面的材料,根据要求写作。好的故事,可以帮我们更好地表达和沟通,可以触动心灵、启迪智慧;好的故事,可以改变一个人的命运,可以展现一个民族的形象……故事是有力量的。以上材料引发了你怎样的联想和思考?请写一篇文章。要求:选准角度,

    2024年02月11日
    浏览(50)
  • chatgpt生成【2023高考作文】新课标II - 青少年自己的空间

    本试卷语言文字运用II提到的“安静一下不被打扰”的想法,在当代青少年中也不鲜见。青少年在学习、生活中,有时希望有一个自己的空间,放松,沉淀,成长。 请结合以上材料写一篇文章。 要求:选准角度,确定立意,明确文体,自拟标题;不要套作,不得抄袭;不得泄

    2024年02月08日
    浏览(53)
  • 用GPT4写2023高考语文作文,新课标I卷,Ⅱ卷

    每年的高考语文题目都会是热议的话题,今年同样也不例外。但是今年讨论的话题除了作文题目本身之外,对于chatgpt写出的作文会是什么样子的也​让广大网友同样期待 好的故事,可以帮我们更好地表达和沟通,可以触动心灵、启迪智慧;好的故事,可以改变一个人的命运

    2024年02月09日
    浏览(47)
  • Fast.ai 的新课来了,给你详细介绍 Stable Diffusion 原理

    最近跟学生们学了个新词儿,叫做「双厨狂喜」。一般形容两个知名创作者合作出来的作品 ------ 例如视频或者直播等 ------ 很受大伙儿欢迎。 这次,告诉你一个好消息,fast.ai 要和 Huggingface, Stability.ai(Stable Diffusion 作者之一)等各方一起创作一门新课程,叫做 From Deep Learn

    2024年02月11日
    浏览(47)
  • GitHub Copilot Chat将于12月全面推出;DeepLearning.AI免费新课

    🦉 AI新闻 🚀 GitHub Copilot Chat将于12月全面推出,提升开发者的生产力 摘要 :GitHub宣布将于12月全面推出GitHub Copilot Chat,这是GitHub Copilot的一个新功能,旨在帮助开发者编写代码。它能够集成到开发者的桌面IDE环境中,并能够根据上下文联想出后文,不仅限于代码缺省补充和

    2024年02月04日
    浏览(39)
  • 【新课上架】安装部署系列Ⅲ—Oracle 19c Data Guard部署之两节点RAC部署实战

    01 课程介绍 Oracle Real Application Clusters (RAC) 是一种跨多个节点分布数据库的企业级解决方案。它使组织能够通过实现容错和负载平衡来提高可用性和可扩展性,同时提高性能。本课程基于当前主流版本Oracle 19c+OEL7.9解析如何搭建2节点RAC对1节点单机的DATA GUARD搭建,让学员快速掌

    2024年01月25日
    浏览(45)
  • VUE组件--动态组件、组件保持存活、异步组件

    有些场景可能会需要在多个组件之间进行来回切换,在vue中则使用 component :is=\\\"...\\\" 来实现组件间的来回切换  changeHandler()使用三目运算符,来实现Component1和Component2之间的相互切换  默认为组件1   当组件1切换到组件2时,组件1会被强行销毁 初始态:  点击“更新数据”: 点

    2024年01月19日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包