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-cli重点整理 -> 正文阅读

[JavaScript知识库]vue-cli重点整理

作者:_61

vue-cli易错整理

refs的用法

$refs 拿到的是子组件的VM对象;
getElementById 只能拿到子组件标签;

<h2 id="BlogItem" ref="BlogItem">小白</h2>
-----------------------------------------------
console.log(document.getElementById("BlogItem"));
 console.log(this.$refs.BlogItem);

子组件套用父组件的数据(props的用法)

//父组件.vue
 <BlogItem  v-for="itme in itmes" :key="itme.id" :myitme="itme" />
 ------------------------------------------------------------------
  data(){
    return{
        itmes:[
          {id:1,title:'这是一个标题一',message:'这是副标题描述一',author:'张三',views:2000,msg:3,time:'2020-09-08'}
        ]
    }
  }

//子组件
<div>
        <h2>{{myitme.title}}</h2>
        <p>{{myitme.message}}</p>
        <span>{{myitme.author}}</span>
        <span>{{myitme.views}}</span>
        <span>{{myitme.msg}}</span>
        <span>{{myitme.time}}</span>
    </div>
    -----------------------------------------
    props:{
        myitme:{//完整接收
            type: Object
        }
    }
    //或者如下接收(一般接收,这样可以拦截信息进行验证)
    -----------------------------------------------
     props:{
        title:{//一般接受
            type:String,
            required:true//必须传递参数
        },
        message:String,
        author:String,
        views:{
            type:Number,
            default:0//默认值为0
        },
        msg:Number,
        time:String
    }

局部样式

问题:不同组件之间css选择器名一样造成样式冲突问题??
** 解决方式:

混入/混合

问题:解决父组件和各子组件之间有过多重复代码

  1. src下建一个js文件,用于存放公共数据(我这里是mixin.js文件)
//这里也可以2个合在一起写;该文件中可以抽出data,method,watch、mounted等
export const info = {
    methods:{
        showMsg(){
            alert("小白你好~");
        }
    }
}

export const userMsg ={
    data(){
        return {
            message:'混入和混合'
        }
    }
}
  1. 组件中导入文件(注意:mixins是个属性,名字不可随意)
<script>
import {info,userMsg} from '../mixin.js'

export default {
    name:'BiliBili',
    mixins:[info,userMsg]//引入相同配置
}
</script>

**组件之间值传递(有点绕,要认真)

描述:2个子组件(School.vue和Student.vue)和一个父组件App.vue。
School组件中可以手动输入学生数据,存在父组件的data中,Student显示父组件中的学生数据
在这里插入图片描述
注意代码中的addStudent的关系
//App.vue


<template>
  <div id="app">
    <h1 class="bgcolor">{{msg}}</h1>
    <School :addStudent="addStudent2"/>
    <hr>
    <Student v-for="stu in students" :key="stu.id" :stu1="stu"/>
  </div>
</template>

<script>
//引入组件
import School from './components/School.vue'
import Student from './components/Student.vue'

export default {
  name: 'App',
  components: {//注册组件
    School,
    Student
  },
  data(){
    return{
        msg:'组件间值传递',
        students:[
          {id:'001',uname:'张三',age:10,sex:'女'},
          {id:'002',uname:'李铁锤',age:18,sex:'女'},
          {id:'003',uname:'王二蛋',age:10,sex:'男'},
          {id:'004',uname:'淑芬',age:10,sex:'女'}
        ]
    }
  },
  methods:{
    addStudent2(stu){
        this.students.unshift(stu);
    }
  }
}
</script>


//Student.vue

<template>
    <div>
        <h1>{{stu1.uname}}  {{stu1.age}}  {{stu1.sex}}</h1>
    </div>
</template>

<script>
export default {
    name:'Studnet',
    // props:['stu1']
     props:{
        stu1:{//完整接收
            type: Object
        }
    }
}
</script>

//School.vue

<template>
  <div>
        <h1 class="bgcolor">希望小学</h1>
        姓名:<input type="text" v-model="name"><br>
        年龄:<input type="text" v-model="age"><br>
        性别:<input type="text" v-model="sex"><br>
        <button @click="addStu()">添加学生</button>
  </div>
</template>

<script>
//npm i nanoid
import {nanoid} from 'nanoid'
export default {
    name:'School',
    data(){
        return{
            name:'',
            age:'',
            sex:''
        }
    },
    props:['addStudent'],
    methods:{
        addStu(){
            //this.##代表当前节点的属性
            const student = {id:nanoid(),uname:this.name,age:this.age,sex:this.sex}
            this.addStudent(student);
        }
    }
    
}
</script>

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-01 16:46:55  更:2021-10-01 16:47:36 
 
开发: 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年5日历 -2024/5/18 22:40:40-

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