vue3 provide与inject进行状态管理

vue3 provide与inject进行状态管理

一、数据仓库准备

在store–>新建index.js文件,作为仓库数据

  • 状态集中管理
  • 数据实现响应式
  • ref reactive—>对象中存储状态msg,age,counter
import {
    
    reactive} from 'vue'
const store={
    
    
	//数据
    state:reactive({
    
    
        msg:"Hello Word LLT"
    }),
    //方法
    updateMsg:function(){
    
    
        this.state.msg="你好 LLT"
    }
}
//如何在App组件通过provide提供
export default store

二、子组件准备

Hello.vue 文件

<template>
    <div>
        <p>{
    
    {
    
    store.state.msg}}</p>
        <button @click="updateMsg">改变msg</button>
    </div>
</template>

<script>
    export default{
    
    
        inject:['store'],
        methods:{
    
    
            updateMsg(){
    
    
                this.store.updateMsg();
            }
        },
    }
</script>

或者 用setup (推荐)

<script setup>
    import {
    
     inject } from 'vue';
    const store=inject(['store']);
    function updateMsg(){
    
    
        store.updateMsg();
    }
</script>

三、根组件使用(最终使用)

<script setup>
import Hello from './components/Hello.vue'
import store from "./store";//引入
import {
    
    provide } from 'vue'
provide('store',store)
</script>

<template>
	<Hello/>
</template>

provide 是父组件向子组件传递信息,即App.vue向Hello.vue传递信息
如果是单个可以用ref传递
provide(‘store’,ref(“张三”))
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Linlietao0587/article/details/128359324