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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM