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