1. 程式人生 > 其它 >vue 資料傳遞 - provide 與 inject

vue 資料傳遞 - provide 與 inject

vue 2.2.0新增了 provide \ inject功能。

官網提示:provide 和 inject主要為高階外掛/元件庫提供用例,並不推薦直接用於應用程式程式碼中。

這對選項需要一起使用,以允許一個祖先向其所有子孫後代注入一個依賴,不論元件層次有多深,並在起上下游關係成立的時間裡始終生效。這裡與react的上下文特性很相似。

注意:這個provide提供的資料正常來說是不會自動更新的,但是如果傳遞的引數是已監聽的物件也是可以做到實時更新的。

//Parent.vue
<template>
    <div class="box">
        <p>發給child的modelMSG: {{modelMSG.msg}}</p>
        <p>
            修改modelMSG:
            
<input type="text" v-model="modelMSG.msg" /> </p> <Child :data.sync="modelMSG" /> </div> </template> <script> import Child from './Child' export default { name: 'Parent', components: { Child, }, provide() { return { data:
this.modelMSG, } }, data() { return { modelMSG: { msg: '發給Child的modelMSG資訊', }, name: 'Parent的名字', } }, } </script>
//Child.vue
<template>
    <div class="hello">
        <p class="red">來自Parent的value: {{data.msg}}</p>
    </div>
</template>

<script>
export 
default { name: 'Child', inject: ['data'], } </script>