vue3.0的變化


初涉vue3.0,下面是我在demo中遇到的一些問題(我是用的vue-cli進行開發)

【1】main.js中配置

 vue2.x   
 Vue.prototype.$baseURL="https://www.xxxxxx.online/mxs/"

 vue3.0
 const app = createApp(App);   
 app.config.globalProperties.$baseURL="https://www.xxxxxx.online/mxs/"

 //vue3.0中main.js里面已經沒有Vue,取代用的是createApp(App);

 

【2】this的問題

  vue2.x  === 可以在生命周期中通過this來獲取當前實例;

  vue3.x  === 已經沒有this指向;    

  首先引入  import { getCurrentInstance } from "vue";

  再在setup 中   const { proxy } = getCurrentInstance();這里proxy就可以得到幾乎等同於this的作用  

  //補充說明:有的文章說用 const { ctx } = getCurrentInstance();但是這樣打包后會報錯,用proxy就可以完美避免

 

【3】數據聲明的變化

  import { ref } from "vue";

  setup() {

    let str1 = "str1";  
      //如果只是在setup內部調用,不在頁面渲染的數據可以直接生命;

    let str2 = ref(str1);      
      //需要在頁面渲染的數據用ref包裹,這樣才能在后期修改變量值時,頁面同步絢爛

    str2.value = "我改變了!"    
      //變量值被ref包裹時,想要修改得通過 變量名.value來修改否則會報錯

    return {
      str2
    }

  }

 

【4】this.$emit的改變

  vue2.x  ===  子組件    this.$emit("handleFun",data);

  vue3.x  ===  setup(props,context) {
            context.emit("handleFun",data);   //vue3.0 setup自帶兩個參數props,context可以直接使用注意這里emit沒有$符號,父組件中還是同樣的方式操作
           }

 

 

【5】props的用法

  vue2.x  === props:["attr1","attr2"];   

  vue3.x ===

  html部分

  <div  v-for(item,index) in attr2 :key="index"  :style="{ 'color' : attr1 }" >

  script部分  

  import { toRefs } from "vue";

 

  props:{

    attr1:String,

    attr2:Object

  },

  setup(props) {

    const  { attr1 , attr2 } = toRefs(props);  //需要在setup讀取props中屬性值時使用,如果直接在html使用同vue2.x中一樣直接使用即可

    const iNeed1 = attr1.value;     //使用時得用 .value 來讀取屬性值

    const iNeed2 = attr2.value

    return{
      props  //記得此處不return props ,template中將接受不到props屬性
    }

  }

 

 

 //入住博客第一篇文章,如果覺得有幫助請幫忙點個贊什么的,如果覺得不好請諒解,小菜比,全靠自己摸索====難受,有什么問題也可以跟我留言,如果我有過類似經歷會更新博客回答你的問題

 


免責聲明!

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



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