点击前端自学社区查看更多精彩




2020前端技术面试必备Vue:(一)基础快速学习篇-LMLPHP





 <h3 :style="[yy , dd]">测试</h3>

<script>
new Vue({
el: '#fade',
data:{
dd:{"font-weight":900},
yy:{color:'blue','font-size':"30px"},
}
})
</script>

条件渲染

v-if  与  v-show

// 两个指令都可以做控制元素渲染。
//区别是:
1. v-if 是用来控制元素的创建和销毁
2. v-show 是用来控制元素的 display 变化

//选择使用:
如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

列表渲染

v-for

变异方法

//官方含义:会改变调用了这些方法的原始数组。
简单说:就是改变了原始数组,在原始数组上做一些操作,例如:增加,删除..

// 变异方法包括:
push()
pop()
shift()
unshift()
splice()
sort()
reverse()

非变异方法

//所谓非变异方法:不改变原始数组,生成新的数组
// 非变异方法包括:
filter()
concat()
slice()
....

注意

//vm 为Vue实例

var vm = new Vue({
data: {
items: ['a', 'b', 'c']
}
})

//当你利用索引直接设置一个数组项时
vm.items[indexOfItem] = newValue ❌错误操作

//官方提供了两种解决办法
1. Vue.set
Vue.set(vm.items, indexOfItem, newValue)

2. Array.prototype.splice
vm.items.splice(indexOfItem, 1, newValue)



//当你修改数组的长度时
vm.items.length = newLength ❌错误操作

//官方提供了一种解决办法
1.vm.items.splice(newLength)

对象变更注意

var vm = new Vue({
data: {
userProfile: {
name: 'Anika'
}
}
})

// 添加一个属性 可以使用
Vue.set(vm.userProfile, 'age', 27)

// 为已有对象赋值多个新属性,可以使用 Object.assign()
vm.userProfile = Object.assign({}, vm.userProfile, {
age: 27,
favoriteColor: 'Vue Green'
})

显示过滤 / 排序的结果

    <div>
<div id="main">

<template v-for='(item,index) in filters' :key=index>
<li>{{item}}</li>
</template>
</div>

</div>

<script>
var vm = new Vue({
el: '#main',
data: {
list:[1,2,3,4,5,6]
},
computed: {
filters: function(){
return this.list.filter(item =>
item%2 == 0
)
}
},
})
</script>

事件处理

事件修饰符

<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a>

<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>

<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>

<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>

<!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div>

<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>

按键修饰符

// 虽然Vue 废除了 keyCode事件,但是Vue 提供了绝大多数常用的按键码的别名:
.enter
.tab
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right


<!-- 只有在 `key``Enter` 时调用 `vm.submit()` -->
<input v-on:keyup.enter="自定义事件">

表单输入绑定

复选框checkbox

单选按钮radio

选择框 select

值绑定

复选框
<input
type="checkbox"
v-model="toggle"
true-value="yes"
false-value="no"
>

// 当选中时
vm.toggle === 'yes'
// 当没有选中时
vm.toggle === 'no'
单选按钮
<input type="radio" v-model="pick" v-bind:value="a">
// 当选中时
vm.pick === vm.a
选择框选项
<select v-model="selected">
<!-- 内联对象字面量 -->
<option v-bind:value="{ number: 123 }">123</option>
</select>

// 当选中时
vm.selected.number // => 123

修饰符

组件基础

父组件 向 子组件 传递值  通过在子组件 身上动态绑定传值
三部曲:“
1. 先引入 子组件
2. 注册 子组件
3. 使用子组件 传值


例如:

<template>
<div>
<h1>Father 组件</h1>
<hr>
// 这块动态传递了一个数组对象
<Son :list = list @receiveToParent="receiveToSon"></Son>
</div>
</template>

<script>
import Son from './Son'
export default {
name: 'Father',
components: {
Son
},
data () {
return {
list: [
{ title: '小张中彩票了', author: 'Mr.Liu' },
{ title: '房价跌倒谷底', author: 'Mr.Liu' },
{ title: '阿里云便宜了', author: 'Mr.Liu' }
]
}
},
methods: {
receiveToSon (e) {
console.log(e)
}
}
}
</script>


子组件向父亲传递值  $emit

1. 子组件 通过this.$emit('事件名称',传递参数)
2. 在父子组件中 通过 在子组件身上 @事件名称 = 自定义的事件 来接收参数

<template>
<div>
<h1>Son 组件</h1>
<template>
<ul>
<li v-for="(item,index) of list" :key="index"> <h2>{{item.title}}</h2> <br><h3>{{item.author}}</h3></li>
</ul>
</template>
<Button @click="toParent">子向父 传递值</Button>
</div>
</template>

<script>
export default {
name: 'Son',
// 通过prop 来接收 父组件传递过来的数据
props: ['list'],
data () {
return {
name: '测试'
}
},
methods: {
toParent () {
// 子组件 通过 this.$emit(事件名,要传递的参数)
this.$emit('receiveToParent', this.name)
}
}
}
</script>



2020前端技术面试必备Vue:(一)基础快速学习篇-LMLPHP

关注公众号,即可加入自学交流群学习


                 原创不易 觉得不错的话点一下在看😝


本文分享自微信公众号 - 前端自学社区(gh_ce69e7dba7b5)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

03-29 03:45