Vue3-18 组件基础

组件的定义

我们在项目的src/components种定义组件,vue提供了几种简单的组件的定义方式

在单文件种定义组件
<script setup>
import { ref } from 'vue'
const count = ref(0)
</script>
<template>
  <div>
    第一种
    <button @click="count++">点击增加到 {{ count }} .</button>
  </div>
</template> 

是的,他和我们正常写vue是一样的

在单文件中使用template定义
<template id="testC">
  <div>
    第二种
    <button @click="count++">点击增加到 {{ count }} .</button>
  </div>
</template> 
    <script lang="ts">
    import { ref } from 'vue'
    
    export default {
        setup(){
        const count = ref(1)
         return count
    },
      template: "#testC"
    }
    </script>

组件向下传递信息

从父组件传递到子组件,我们需要使用props进行传递

<template>
    <div>
        table传参
        <!-- <table>
            <tr v-for="data in datas.datas" :key="data.name">
                <td>{{ data.name }}</td>
                <td>{{ data.age }}</td>
            </tr>
        </table> -->
        <table>
            <tr v-for="data in datas2" :key="data.name">
                <td>{{ data.name }}</td>
                <td>{{ data.age }}</td>
            </tr>
        </table>
    </div>
  
 
</template>
 <script lang="ts">
 export default {
    props: ['datas2'],
    setup(props) {
        const datas2 = props
        console.log(datas2)
        return datas2
    }
 }
 </script>
<!-- <script lang="ts" setup>
    import { ref } from 'vue'
    const datas = defineProps(['datas'])
</script> -->

这分别是script有setup和没有的方式,将注释的代码解开就是第二种,要把第一种注释哦,父组件可以用

        <table-components :datas="data" :datas2="data2"/>

属性将组件值传递进去,这里可以使用vue双向绑定进行消息的传递

组件向上传递信息

当我们向用子组件中的按钮控制父组件中的字体大小时,我们可以使用$emit方式进行消息的传递例如:子组件

<template id="testC">
       <div>第二种
        <button @click="$emit('enlarge-text')">
          点击放大张三
        </button></div>
</template>
    <script lang="ts">
    import { ref } from 'vue'
    
    export default {
      template: "#testC"
    }
    </script>

父组件:

    <div :style="{fontSize: fontSize+'em'}">
        <div>ZHANGSAN</div>
        <count-add-two-components @enlarge-text="fontSize += 0.1"/>
    </div>

我们很轻易的就可以控制组件的大小

      关注公众号:资小库,回复vue,下载练习代码,问题快速答疑解惑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不会写爬虫的程序员B

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

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

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

打赏作者

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

抵扣说明:

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

余额充值