Vue学习笔记-2

ref组件通信

<div id="box">
	<input type="text" ref="mytext"/>
	<button@click="handleAdd">add</button>
	<child></child>
</div>
<script>
	new Vue({
		el:"#box",
		methods:{
			handleAdd(){console.log(this.$refs)}
		}
	})

注意:
属性父组件传给子的属性,只有父组件可以重新传,不允许子组件随意更改
状态-组件内部的状态可以随意修改

严格来说,Vue子组件不能随便更改父组件传递过来的属性,但是可以通过props配合$emit改变父组件传入的值

//父组件
<my-input:warning.sync="warning"/>
//在父组件传入值时,需要有xxx.sync修饰符

//子组件
$emit('update:warning',val)
//子组件可以在$emit('update:xxxx',val),派发事件修改传入的值

渲染普通的HTML元素在Vue中是非常快速地,但有的时候你可能有一个组件,这个组件包含了大量静态内容.这种情况下,你可以在根元素上添加v-once attribute来确保这些内容只计算了一次,然后被缓存

动态组件

<component is="list"></component>

<component is="which"></component>
<footer>
	<ul>
		<li @click="which='home'">
			首页
		</li>
		<li @click="which='list'">
			列表
		</li>
	</ul>
</footer>

旧版slot

<div id="box">
	//当前组件或者节点在哪个模板中,就能访问哪个模板状态
	<child>
		<div slot="a">111111</div>
		<div slot="b">22222</div>
		<div slot="c">33333</div>
		<div>4444444444</div>
	</child>
</div>
<script>
	//单个插槽,<slot></slot>
	//具名插槽,<slot name="a"></slot>
	Vue.component("child",{
		template:`
			<div>
				child
				<slot name="a"></slot>
				<slot name="b"></slot>
				<slot name="c"></slot>
				<slot></slot>
			</div>
		`
	})
	new Vue({
		el:"#box"
	})

新版slot

<navbar>
	<template #left>
		<button>aaa</button>
	</template>
	<template>
		<i class="iconfont icon-all">字体图标</i>
	</template>
</navbar>

插槽版抽屉

<div id="box">
	<navbar >
		<button @click="isShow=!isShow">click</button>
	</navbar>
	<sidebar v-show="isShow"></sidebar>
</div>
<script>
	Vue.component("navbar",{
		template:`
			<div>
			nabbar- <slot></slot>
			</div>
		`
	})
</script>

过渡效果

<div id="box">
	<button @click="isShow= !isShow">change</button>
	<transition enter-active-class="kerwin-enter-actïve">
		<div v-show="isShow">1111111111111111</div>
	</transition>
</div>

列表过渡

<transition-group name="kerwin" tar="ul" v-show="datalist".length>
	<li v-for="(item,index) in datalist" :key="item">
		{{item}}--{{index}}
		<button @click="handleDel(index)">del</button>
	</li>
</transition-group>

< transition-group>不同意transition,它会以一个真实元素呈现:默认为一个span,也可以通过tag特性更换为其他元素

可复用过渡

Vue.component("sidebar",{
	props:["mode"],
	template:`
		<transition :name="mode">
		<ul style="background-color: yellow;width: 200px;height: 500px;
		<1i>首页</1i>
		<1i>钱包</1i>
		<1i>设置</1i>
		</ul>
	`
	</transition>
})

生命周期

更新

beforeUpdate(){
	console.log("beforeupdate","更新之前,记录老的dom某些状态,比如滚动条
	位置记录")
},
updated(){
	console.log("updated",“更新完成,获取更新的后dom,才进行swiper工作的插
	件")
}

销毁

beforeDestroy(){
	console.log("beforeDestroy",“清除定时器,事件解绑,,,,")
},
destroyed(){
	console.1og("destroyed","清除定时器,事件解绑,,,,")
}
})

swiper

引用&使用

https://swiper.com.cn/

//引入
<div class="swiper">
<div style="background-image:url(/img/Parallax.jpg)" data-swiper-parallax="-23%" data-swiper-parallax-duration="3000"></div>
    <div class="swiper-wrapper">
       <div class="swiper-slide">
            <div class="title" data-swiper-parallax="-100">从右边100px开始进入</div>
            <div class="subtitle" data-swiper-parallax="-200">从右边200px开始进入</div>
            <div class="text" data-swiper-parallax="-300" data-swiper-parallax-duration="600">
              <p>从右边300px开始进入,时间600ms</p>
            </div>
            <div data-swiper-parallax="0" data-swiper-parallax-opacity="0.5" >透明度变化</div>
            <div data-swiper-parallax-scale="0.15" >缩放变化</div>
        </div>
    </div>
</div>
<script language="javascript"> 
    var mySwiper = new Swiper('.swiper',{
            parallax : true,
    })
</script>

组件

Vue.component("swiper",{
	template:`
		<div class="swiper-container kerwin">
			<div class="swiper-wrapper">
				<div class="swiper-slide">111111111111</div>
				<div class="swiper-slide">222222222222</div>
				<div class="swiper-slide">3333333333</div>
			</div>
			<div class="swiper-pagination"></div>
		</div>
	`
})
<div id="box">
	<swiper v-if="datalist.length">
		<swiper-item v-for="data in datalist" :key="data">
			<img :src="data"/>
		</swiper-item>
	</swiper>
	<!-- <swiper :key="datalist.length"></swiper> -->
</div>

mounted(){
new Swiper("Jkerwin", {
	//direction:"vertical",//垂直
	//如果需要分页器
	pagination: {
		el: '.swiper-pagination',
	},
	loop: true,
	autoplay: {
		delay: 2500,
		disableonInteraction: false,
	}
	}})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

优降宁

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

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

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

打赏作者

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

抵扣说明:

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

余额充值