vue组件基础使用

227 阅读1分钟

一、创建一个vue文件(Test.vue),基础内容如下

<template>
  <div ></div>
</template>

<script>
export default {
    name: 'Test'
}
</script>

<style>

</style>

二、组件引用(在其他组件使用Test.vue)

<template>
  <div>
    <!-- 第二步:使用组件 -->
    <Test/>
  </div>
</template>

<script>
export default {
    name: 'home',
    // 第一步:先引入组件
    components:{
        // import('./Test.vue') 组件路径需要根据自己的情况来
        Test: () => import('./Test.vue')
    }
}
</script>

<style>

</style>

三、组件中属性和方法详解

注(常用属性)

<template>
    <div></div>
</template>

<script>
export default {
    props: { }, // 组件接收父组件的参数
    data() { // 页面渲染需要的属性
        return { }
    },
    created() { }, // 生命周期函数 | 页面已经创建
    mounted() { }, // 生命周期函数 | 页面有更新
    computed: { },  // 计算属性 | 页面渲染中需要用到复杂的数据
    methods: { }, // 方法 | 在页面中需要的方法可以在这里定义 
    watch: { }, // 监听 | 可以监听 props|| data || computed || vue自身的相应式数据 
}
</script>

<style></style>

1、data属性的定义和使用

data属性是vue里实现响应式数据的属性:vue特色就是实现数据的双向绑定,但是只有在data中定义的属性才能实现数据的双向绑定。

(1)组件中定义data

<template>
  <div >
   
  </div>
</template>

<script>
export default {
    name: 'Test',
    // data 应定义为一个函数式对象: data定义为一个函数,返回一个对象 return {}
    // return {} 中的属性都是响应式的,可以实现数据的双向绑定
    data() {
      return {
         username: 'lzz',
         password: '123456'
      }
    }
}
</script>

<style>

</style>

(2)组件中使用data里的值

<template>
  <div >
   <!-- 第一种:使用{{  }} -->
   {{ username }} {{ password }}


   <!-- 下面两种了解即可 -->
   <!-- 第二种:使用指令 v-html -->
   <span v-html="username"></span>
   <span v-html="password"></span>
   <!-- 第三种: 使用指令 v-text -->
   <span v-text="username"></span>
   <span v-text="password"></span>

  </div>
</template>

<script>
export default {
    name: 'Test',
    // data 应定义为一个函数式对象: data定义为一个函数,返回一个对象 return {}
    // return {} 中的属性都是响应式的,可以实现数据的双向绑定
    data() {
      return {
         username: 'lzz',
         password: '123456'
      }
    },
    mounted(){
      // 在script 方法里使用时,前面只需加上 this. 即可
      this.username = 'gxxxxx'
      const name = this.username
    }
}
</script>

<style>

</style>

2、props属性详解和使用

props属性是组件接收其他组件给他传递参数的一种途径

(1)、在组件中定义props:

<template>
  <div ></div>
</template>

<script>
export default {
    name: 'Test',
    // 参数 可以接收多个
    props: {
        // name 是参数名称    {type: String,default: 'gxx'}是对参数name的配置;
        // type:String 表示 参数name需要接收String(js中的String数据类型)类型的数值;
        // default: 'gxx'表示如果父组件没有给参数name传值,那么name默认值就是gxx
        name: {
          type: String, // 接收String数据类型的值
          default: 'gxx' // 默认值
        },
        // 和name的描述一致,不过这里的数据类型变成了Number
        age:{
          type: Number,
          default: 18
        }
    }
}
</script>

<style>

</style>

(2)、在组件中使用propos

<template>
  <div >
    <!-- 使用{{  }}来使用 -->
    {{ name }} {{ age }}
    <!-- 使用指令方式使用 v-html -->
    <span v-html="name"></span>
    <span v-html="age"></span>
    <!-- 使用指令方式使用 v-text -->
    <span v-text="name"></span>
    <span v-text="age"></span>
  </div>
</template>

<script>
export default {
    name: 'Test',
    // 参数 可以接收多个
    props: {
        // name 是参数名称    {type: String,default: 'gxx'}是对参数name的配置;
        // type:String 表示 参数name需要接收String(js中的String数据类型)类型的数值;
        // default: 'gxx'表示如果父组件没有给参数name传值,那么name默认值就是gxx
        name: {
          type: String, // 接收String数据类型的值
          default: 'gxx' // 默认值
        },
        // 和name的描述一致,不过这里的数据类型变成了Number
        age:{
          type: Number,
          default: 18
        }
    }
}
</script>

<style>

</style>

3、methods属性使用

methods是vue里定义方法的一个属性对象

<template>
  <div >
   <!-- 第一种:使用{{  }} -->
   {{ username }} {{ password }}


   <!-- 下面两种了解即可 -->
   <!-- 第二种:使用指令 v-html -->
   <span v-html="username"></span>
   <span v-html="password"></span>
   <!-- 第三种: 使用指令 v-text -->
   <span v-text="username"></span>
   <span v-text="password"></span>

    <!-- 调用方法:v-on指令 -->
    <span v-on:click="init">v-on点击方法</span>

    <!-- 调用方法:v-on指令缩写 @(推荐) -->
    <span @:click="init"> @点击方法</span>

  </div>
</template>

<script>
export default {
    name: 'Test',
    // data 应定义为一个函数式对象: data定义为一个函数,返回一个对象 return {}
    // return {} 中的属性都是响应式的,可以实现数据的双向绑定
    data() {
      return {
         username: 'lzz',
         password: '123456'
      }
    },
    mounted(){ // 生命周期函数就是一个方法 是vue对象自己触发

      // 在script 方法里使用时,前面只需加上 this. 即可
      this.username = 'gxxxxx'
      const name = this.username
      
      // 调用方法
      this.testClick()
    },
    methods:{
      /**
       * 定义一个方法
       * init | 方法名,可以自己定,但是在这个页里不能重名
       */
      init() {
        console.log('这是一个简单方法');
        // 输出 data 里的属性
        console.log(this.username);
        // 设置data 里的属性值
        this.password = 'gxxx'
      },
      /**
       * 测试方法 | 测试在方法里调用其他方法
       */
      testClick(){
        // 调用init方法
        this.init();
      }
    }
}
</script>

<style>

</style>