Rumah >hujung hadapan web >View.js >Cara menggunakan gula sintaks persediaan vue3

Cara menggunakan gula sintaks persediaan vue3

王林
王林ke hadapan
2023-05-10 11:43:051468semak imbas

    1. Pengenalan kepada persediaan gula sintaks

    Anda boleh menggunakan tetapan gula sintaks dengan menambahkan atribut persediaan dalam teg skrip.

    Selepas menggunakan gula sintaks persediaan, tidak perlu menulis fungsi persediaan hanya perlu diperkenalkan dan tidak perlu didaftarkan dan kaedah tidak perlu dikembalikan dan boleh digunakan terus dalam template .

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

    2. Api baharu dalam persediaan gula sintaks

    • defineProps: komponen anak menerima prop daripada komponen induk

    • defineEmits: Komponen anak memanggil kaedah dalam komponen induk

    • defineExpose: Komponen anak mendedahkan sifat, yang boleh diperolehi dalam komponen induk

    2.1defineProps

    Kod komponen induk

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

    Kod komponen kanak-kanak

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

    2.2defineEmits

    Kod komponen kanak-kanak

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

    Kod komponen induk

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

    2.3defineExpose

    Kod komponen kanak-kanak

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

    Kod komponen induk

    	<template>
    		<my-comp ref="myComponent"></my-comp>
    		<button @click="onClickButton">获取子组件中暴露的值</button>
    	</template>
    	<script lang="ts" setup>
    		import {ref} from &#39;vue&#39;;
    		import myComp from &#39;@/components/myComponent.vue&#39;;
    		//注册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>

    Tambahan: digunakan dengan skrip biasa

    be609634581fe1bbacded492a56a3eb3 855348821b2e8f2cc4b633bf98f064df biasa boleh digunakan dalam situasi di mana ini diperlukan.

    • Pilihan yang tidak boleh diisytiharkan dalam be609634581fe1bbacded492a56a3eb3, seperti inheritAttrs atau pilihan tersuai yang didayakan melalui pemalam

    • Isytiharkan eksport bernama

    • Jalankan kesan sampingan atau cipta objek yang hanya perlu dilaksanakan sekali

    <script>
        // 普通 <script>, 在模块范围下执行(只执行一次)
        runSideEffectOnce()
        
        // 声明额外的选项
        export default {
          inheritAttrs: false,
          customOptions: {}
        }
    </script>
    
    <script setup>
        // 在 setup() 作用域中执行 (对每个实例皆如此)
    </script>

    Atas ialah kandungan terperinci Cara menggunakan gula sintaks persediaan vue3. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam