IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue知识点整理(一) -> 正文阅读

[JavaScript知识库]Vue知识点整理(一)

1.v-show 如果为false 只是添加了一个display=true的描述,没有被真正的删除。
2.v-if 如果为false 是真正的在dom节点下删除这个节点
3. 数组更新检测
push() pop() split(),sort,reverse(),unshilf(),shilf()都可以影响原数组
filter(),concat(),slice(),map()新数组替换旧的数组,原数组不会改变,视图不会刷新
通过索引值来修改原数组的方式 原数组收到影响,但视图不会刷新
可以使用 datalist.splice(0,1,"chenchen")就可以了 ?删除从第0个开始的第一个
或者使用Vue.set(vm.datalist,0,"chenchen")
4.解决冒泡问题
孩子节点触发一个事件,父节点的事件也被触发了 ?冒泡问题
在调用孩子节点方法的时候,其父亲节点的方法也被触发了
原生的解决方法是调用$event.stopPropagation方法阻止,而在vue中,直接在 @click.stop
或者可以在父节点上使用@click.self来确保只有自己被点击了才触发方法

5.阻止默认行为
?例如a标签的跳转 <a href="www.baidu.com" @click.prevent="handleChangePage()"> 百度一下 </a>
?原生 $event.preventDefault()阻止默认行为
?vue使用@click.prevent
6.过滤应用
?? ?当还没有学习计算属性的时候,可以采用复制data的方式来过滤应用,复制一份相同的列表,在方法中过滤后再进行赋值
?? ? ?var newList = this.list.filter(item=>item.indexOf(this.mytext)>-1)
? ? ? this.dataList = newList
7.axios示例
?? ? ?new Vue({
? ? ? ? ? ? el:"#box",
? ? ? ? ? ? data:{
? ? ? ? ? ? ? ? datalist:''
? ? ? ? ? ? },
? ? ? ? ? ? methods:{
? ? ? ? ? ? ? ? handleClick(){
? ? ? ? ? ? ? ? ? ? axios.get("./js/test.json").then(res=>{
? ? ? ? ? ? ? ? ? ? ? ? console.log(res.data.data.films)
? ? ? ? ? ? ? ? ? ? ? ? this.datalist=res.data.data.films?
? ? ? ? ? ? ? ? ? ? }).catch(err=>{
? ? ? ? ? ? ? ? ? ? ? ? console.log(err);
? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? })
8.fetch示例
?? ? new Vue({
? ? ? ? ? ? el: "#box",
? ? ? ? ? ? data: {
? ? ? ? ? ? ? ? dataList: []
? ? ? ? ? ? },
? ? ? ? ? ? methods: {
? ? ? ? ? ? ? ? handleClick() {
? ? ? ? ? ? ? ? ? ? fetch("js/test.json").then(res => res.json()).then(res => {
? ? ? ? ? ? ? ? ? ? ? ? console.log(res.data.films)
? ? ? ? ? ? ? ? ? ? ? ? this.dataList = res.data.films
? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? })
9.计算属性
计算属性要比方法性能更高,在多个地方使用得话,计算属性只需要计算一次,而方法要调用多次,计算属性会缓存依赖的状态改变了,计算属性会重新计算一遍
10.利用计算属性解决知识点6
computed: {
? ? ? ? ? ? ? ? getMyDataList(){
? ? ? ? ? ? ? ? ? ? return this.list.filter(item=>item.indexOf(this.mytext)>-1)
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
11.vue更新原理
?<!--更新原理就是被Setter方法拦截, 渲染函数,其实就是新的dom节点和老的dom节点进行对比.
? ? ? ? 然后调用diff算法以补丁的形式打到真实的dom上。
? ? ? ??
? ? ? ? diff怎么对比的?
? ? ? ? ? ? 1.dom节点同层级对比。
? ? ? ? ? ? 2.按照同key值对比
? ? ? ? ? ? 3.同组件对比
? ? ? ? ? ? 两个标签一样,还会进行对比
? ? -->
12.组件
?? ? ?//扩展html元素,封装可重用代码
? ? ? ? // Vue.component
? ? ? ? //组件编写与Vue实例的区别
? ? ? ? //自定义组件需要有一个root element
? ? ? ? //父子组件的data是无法共享的
? ? ? ? //组件可以有data,method,computed 但是 data必须是一个函数
? ? ? Vue.component("navbar",{
? ? ? ? ? ? template:`<div style="background:yellow">
? ? ? ? ? ? ? ? <button @click="handleClick()">返回</button>
? ? ? ? ? ? ? ? {{navbarname}}
? ? ? ? ? ? ? ? <button>首页</button>
? ? ? ? ? ? ? ? <child></child>
? ? ? ? ? ? ? ? <navbarchild></navbarchild>
? ? ? ? ? ? ? ? </div>`,
? ? ? ? ? ? methods: {
? ? ? ? ? ? ? ? handleClick(){
? ? ? ? ? ? ? ? ? ? alert("返回")
? ? ? ? ? ? ? ? }
? ? ? ? ? ? },
? ? ? ? ? ? data(){
? ? ? ? ? ? ? ? return {
? ? ? ? ? ? ? ? ? ? navbarname:"navbarname"
? ? ? ? ? ? ? ? }
? ? ? ? ? ? },
? ? ? ? ? ? //局部定义组件
? ? ? ? ? ? components:{
? ? ? ? ? ? ? ? navbarchild:{
? ? ? ? ? ? ? ? ? ? template:`<div>navbarchild----只能在navbar中使用</div>`
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? })
13.父组件传子组件(使用动态绑定)
?? ?-如果想传递一个对象的话使用动态绑定
?? ? //属性验证 ?校验一下父组件传过来的值是否符合属性 null为不限制类型?
? ? ? ? ? ? props:{
? ? ? ? ? ? ? ? myname:String,
? ? ? ? ? ? ? ? myshow:Boolean
? ? ? ? ? ? }?
14.子组件传递父组件
?? ?子传父用的是事件向上传,
? ? 在子组件中调用 this.$emit("父组件中的方法")
? ? <body>
? ? <div id="box">
? ? ? ? 父组件
? ? ? ? <child @myevent="handleEvent($event)"></child>
? ? </div>
</body>
<script>
? ? Vue.component('child', {
? ? ? ? template: `<div>
? ? ? ? ? ? ? ? ? ? ? ? child子组件
? ? ? ? ? ? ? ? ? ? ? ? <button @click="paymoney()">click</button>
? ? ? ? ? ? ? ? ? ? ? ? </div>`,
? ? ? ? data() {
? ? ? ? ? ? return {
? ? ? ? ? ? ? ? chilrdName: "子组件得状态"
? ? ? ? ? ? }
? ? ? ? },
? ? ? ? methods:{
? ? ? ? ? ? paymoney(){
? ? ? ? ? ? ? ? this.$emit("myevent",this.chilrdName) //分发事件
? ? ? ? ? ? }
? ? ? ? ? ?
? ? ? ? }
? ? })
? ? new Vue({
? ? ? ? el: '#box',
? ? ? ? methods: {
? ? ? ? ? ? handleEvent(ev) {
? ? ? ? ? ? ? ? console.log("父组件收到钱了"+ev)
? ? ? ? ? ? }
? ? ? ? }
? ? })
</script>
15.ref通信
ref 放在标签上 是一个原生节点
ref 放在组件上, 是一个组件对象
点击完会获取组件的对象。通过this.$refs.组件名.组件中的方法可以调用组件中的方法。
16.非父子组件的通信
?? ?(1).//中央事件总线
? ? ?var bus = new Vue();//一个空的Vue实例就i是中央事件总线
? ? (2). //推送一个消息
? ? ? ? ? ?bus.$emit("weixinmessage",this.$refs.mytext.value);
? ? (3)在一个合适的地方进行监听
? ? ??? ?//这是一个生命周期函数
? ? ? ? ? ? mounted() {
? ? ? ? ? ? ? ? //用总线进行监听
? ? ? ? ? ? ? ? bus.$on("weixinmessage",(data)=>{
? ? ? ? ? ? ? ? ? ? console.log("收到推送"+data)
? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? console.log("生命周期函数,当前组件dom创建完成 就会调用")
? ? ? ? ? ? }
<!--监听的用$on ?被监听的用$emit-->

17.动态组件 使用:is
? ? ?<!--动态组件可以帮助我们更加方便管理多个组件
? ? ? ? <component>元素动态绑定多个组件到他的is属性上 ?这样会删除组件
? ? ? ? <keep-alive>保留状态,防止重新渲染
? ? -->
18.solt 插槽
? <!--前景,想在组件中添加一个div,但是会被template完全覆盖,这时候,
? ? ? ? 在孩子组件中添加一个<slot>标签,插槽就是预留的位置,
? ? ? ? slot 内容分发 ?把父组件的内容分发到孩子组件中
? ? ? ?1. 目的:就是把父组件的内容与子组件的内容进行混合
? ? ? ? 为什么要这么写?写死不行么?
? ? ? ? 在其他页面也需要的时候,写死就不行了,组件使用别人的,数据使用自己的 ,就是不知道以后要写什么,预留出来的
? ? ? 2.改造子传父
? ? -->
? ? ?<!-- ?父组件的内容在父组件作用域内编译,子组件的内容在子组件作用域编译-->
? ? ? ?3.在child里想把111放在child上面,把222放在child下面
? ? ? ? 使用具名插槽 ?具有名字的插槽
? ? ? ? <child>
? ? ? ? ? ? <div slot="a">1111</div>
? ? ? ? ? ? <div slot="b">222</div>
? ? ? ? </child>

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-05 11:57:28  更:2021-12-05 11:58:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:35:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码