<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 1.父傳子:與vue2一樣 ``` //傳遞數據給子組件 data : [{id : 1,name:"Zhangsan"},{id : 2 , name : "Lisi"}] <Menu v-bind:data="data" title="標題"></Menu> ``` ### 子組件接收,通過defineProps 來接受?**defineProps是無須引入的直接使用即可** ``` //正常接收 defineProps({ title:{ default:"", type:string }, data:Array }) //ts接收方式 <script setup lang="ts"> defineProps<{ title:string, data:number[] }>() </script> ``` TS 特有的默認值方式 withDefaults是個函數也是無須引入開箱即用接受一個props函數第二個參數是一個對象設置默認值 ``` type Props = { title?: string, data?: number[] } withDefaults(defineProps<Props>(), { title: "張三", data: () => [1, 2, 3] }) ``` ## 2.子傳父 ``` <template> <div class="menu"> <button @click="submit">子傳父</button> </div> </template> //寫法一:script + setup <script setup lang="ts"> const emit = defineEmits(['submit']); //如果用了ts可以這樣兩種方式 // const emit = defineEmits<{ // (e: "submit", name: string): void // }>() const clickTap = () => { emit('submit', “測試”) } </script> 寫法二:export + 組合式api export default { emits: ["btn1"],//觸發的方法,需要定義,否則會出現警告 props : ["msg"],//接收參數 setup(props, ctx) { const appPro = inject("appPro"); const appPro1 = inject("appPro1"); console.log(props, "2222"); const btn1 = () => { ctx.emit("btn1", "子組件"); }; //方法和變量需要retrun出去 return { btn1, appPro, appPro1 }; }, }; ``` ## 3.依賴注入 ``` 父組件 <script setup> import home from "./components/home.vue"; import { provide, reactive, ref } from "vue"; provide("appPro",ref("app")) provide("appPro1",ref("app1")) </script> 子組件 <script setup> import { defineProps, defineEmits, inject } from "vue"; const appPro = inject("appPro")//獲取依賴參數 const appPro1 = inject("appPro1") const emits = defineEmits("btn"); const props = defineProps({ msg: "string", }); </script> ``` ## 4.插槽 ``` //子組件 <template> <div> //默認插槽 <slot></slot> </div> //具名插槽 <slot name="son"></slot> </template> //父組件 <home msg="hello" @btn1="btn"> <template #son>我是插槽內容</template> <template #default>我是默認插槽內容</template> </home> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看