91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue3 setup語法糖如何使用

發布時間:2022-08-26 10:13:03 來源:億速云 閱讀:244 作者:iii 欄目:開發技術

這篇文章主要介紹了vue3 setup語法糖如何使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇vue3 setup語法糖如何使用文章都會有所收獲,下面我們一起來看看吧。

    1.setup語法糖簡介

    直接在script標簽中添加setup屬性就可以直接使用setup語法糖了。

    使用setup語法糖后,不用寫setup函數;組件只需要引入不需要注冊;屬性和方法也不需要再返回,可以直接在template模板中使用

    	<template>
    		<my-component @click="func" :numb="numb"></my-component>
    	</template>
    	<script lang="ts" setup>
    		import {ref} from 'vue';
    		import myComponent from '@/component/myComponent.vue';
    		//此時注冊的變量或方法可以直接在template中使用而不需要導出
    		const numb = ref(0);
    		let func = ()=>{
    			numb.value++;
    		}
    	</script>

    2.setup語法糖中新增的api

    • defineProps:子組件接收父組件中傳來的props

    • defineEmits:子組件調用父組件中的方法

    • defineExpose:子組件暴露屬性,可以在父組件中拿到

    2.1defineProps

    父組件代碼

    	<template>
    		<my-component @click="func" :numb="numb"></my-component>
    	</template>
    	<script lang="ts" setup>
    		import {ref} from 'vue';
    		import myComponent from '@/components/myComponent.vue';
    		const numb = ref(0);
    		let func = ()=>{
    			numb.value++;
    		}
    	</script>

    子組件代碼

    	<template>
    		<div>{{numb}}</div>
    	</template>
    	<script lang="ts" setup>
    		import {defineProps} from 'vue';
    		defineProps({
    			numb:{
    				type:Number,
    				default:NaN
    			}
    		})
    	</script>

    2.2defineEmits

    子組件代碼

    	<template>
    		<div>{{numb}}</div>
    		<button @click="onClickButton">數值加1</button>
    	</template>
    	<script lang="ts" setup>
    		import {defineProps,defineEmits} from 'vue';
    		defineProps({
    			numb:{
    				type:Number,
    				default:NaN
    			}
    		})
    		const emit = defineEmits(['addNumb']);
    		const onClickButton = ()=>{
    			//emit(父組件中的自定義方法,參數一,參數二,...)
    			emit("addNumb");
    		}
    	</script>

    父組件代碼

    	<template>
    		<my-component @addNumb="func" :numb="numb"></my-component>
    	</template>
    	<script lang="ts" setup>
    		import {ref} from 'vue';
    		import myComponent from '@/components/myComponent.vue';
    		const numb = ref(0);
    		let func = ()=>{
    			numb.value++;
    		}
    	</script>

    2.3defineExpose

    子組件代碼

    	<template>
    		<div>子組件中的值{{numb}}</div>
    		<button @click="onClickButton">數值加1</button>
    	</template>
    	<script lang="ts" setup>
    		import {ref,defineExpose} from 'vue';
    		let numb = ref(0);
    		function onClickButton(){
    			numb.value++;	
    		}
    		//暴露出子組件中的屬性
    		defineExpose({
    			numb 
    		})
    	</script>

    父組件代碼

    	<template>
    		<my-comp ref="myComponent"></my-comp>
    		<button @click="onClickButton">獲取子組件中暴露的值</button>
    	</template>
    	<script lang="ts" setup>
    		import {ref} from 'vue';
    		import myComp from '@/components/myComponent.vue';
    		//注冊ref,獲取組件
    		const myComponent = ref();
    		function onClickButton(){
    			//在組件的value屬性中獲取暴露的值
    			console.log(myComponent.value.numb)  //0
    		}
    		//注意:在生命周期中使用或事件中使用都可以獲取到值,
    		//但在setup中立即使用為undefined
    		console.log(myComponent.value.numb)  //undefined
    		const init = ()=>{
    			console.log(myComponent.value.numb)  //undefined
    		}
    		init()
    		onMounted(()=>{
    			console.log(myComponent.value.numb)  //0
    		})
    	</script>

    補充:與普通的script一起使用

    <script setup>可以和普通的<script>一起使用。普通的<script>在有這些需要的情況下或許會被使用到。

    • 無法在<script setup>聲明的選項,例如inheritAttrs或通過插件啟用的自定義的選

    • 聲明命名導出

    • 運行副作用或者創建只需要執行一次的對象

    <script>
        // 普通 <script>, 在模塊范圍下執行(只執行一次)
        runSideEffectOnce()
        
        // 聲明額外的選項
        export default {
          inheritAttrs: false,
          customOptions: {}
        }
    </script>
    
    <script setup>
        // 在 setup() 作用域中執行 (對每個實例皆如此)
    </script>

    關于“vue3 setup語法糖如何使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“vue3 setup語法糖如何使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    青州市| 合肥市| 德阳市| 江达县| 会泽县| 高州市| 维西| 榕江县| 瑞金市| 宁蒗| 呼伦贝尔市| 城固县| 辽宁省| 志丹县| 莱州市| 资源县| 油尖旺区| 讷河市| 铜鼓县| 清新县| 水城县| 霍城县| 镇原县| 陆川县| 荆门市| 溧阳市| 大同县| 临泽县| 平果县| 长治县| 西乡县| 英山县| 广丰县| 青海省| 南康市| 桐庐县| 吴桥县| 五家渠市| 宁阳县| 福贡县| 文安县|