vue3的几个新特性的使用

简介: 在结合了 TypeScript 的情况下,传统的 Vue.extend 等定义方法无法对此类组件给出正确的参数类型推断, 这就需要引入 defineComponent() 组件包装函数

一、setup使用


Vue3 生命周期钩子,使用setup()方法替换beforecate和created。 这意味着,在这些方法中放入的任何代码现在都只在setup方法中。


export default {
   setup() {
       --方法
   }
}


二、reactive使用


reactive是Vue3中提供实现响应式数据的方法.


reactive参数必须是对象(json/arr) 如果给reactive传递了其他对象,默认情况下修改对象,界面不会自动更新, 如果想更新,可以通过重新赋值的方式.


import { reactive} from 'vue'
export default {
   setup() { 
   const state = reactive({ 
            count: 0 ,
            message:'Hellow world的'
          });
    const handle=()=>{ --点击事件
            num.value++;
            ptitle.value='修改的父组件的值'
            key.value = 'href'
            state.message = '你好,大千世界'  --点击改变响应数据的值
          }
   return {
            state
          }
    }
}


三、ref的使用


ref和reactive一样,也是用来实现响应式数据的方法 由于reactive必须传递一个对象,所以在实际开发中如果只是想让某个变量实现响应式的时候回非常麻烦 所以Vue3提供了ref方法实现简单值得监听 2.ref本质 ref底层其实还是reactive,所以当运行时系统会自动根据传入的ref转换成reactive. 3.ref注意点 在vue中使用ref的值不用通过value获取 在js中使用ref的值必须通过value获取


import { ref,onMounted } from "vue";
export default {
  setup() {
    let box = ref(null); //本质是reactive({value:null})
    // 需要在生命周期获取
    onMounted(()=>{
      // 当界面挂载出来后就会自动执行
      console.log(box.value);
    })
    //接受的是null,原因是setup执行时机比mounted早,dom还没形成
    console.log(box.value);
    return { box };
  },
};


四、provide和inject的父子组件传值(虽然不是新特性)


provide:提供依赖``是一个对象,或者是一个返回对象的函数。里面呢就包含要给子孙后代的东西,也就是属性和属性值。


inject: 注入依赖一个字符串数组,或者是一个对象。属性值可以是一个对象,包含from和default默认值。


父组件
import { provide} from 'vue'
provide({
     name:'张三',
     age:26
})
子组件通过inject接受
import { inject } from 'vue'
inject("name")


五、defineComponent函数的使用


在结合了 TypeScript 的情况下,传统的 Vue.extend 等定义方法无法对此类组件给出正确的参数类型推断, 这就需要引入 defineComponent() 组件包装函数


import { defineComponent } from "vue";
type Props = {
  name: string;
};
export const TestComponent = defineComponent<Props>({
  setup(props) {
    return () => <div>props:{props.name}</div>;
  },
});


目录
打赏
0
0
0
0
1
分享
相关文章
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
194 64
Vue 3 中 v-model 与 Vue 2 中 v-model 的区别是什么?
总的来说,Vue 3 中的 `v-model` 在灵活性、与组合式 API 的结合、对自定义组件的支持等方面都有了明显的提升和改进,使其更适应现代前端开发的需求和趋势。但需要注意的是,在迁移过程中可能需要对一些代码进行调整和适配。
177 60
|
4月前
|
Vue3中使用provide/inject来避免v-model的循环引用
`provide`和`inject`是 Vue 3 中非常有用的特性,在处理一些复杂的组件间通信问题时,可以提供一种灵活的解决方案。通过合理使用它们,可以帮助我们更好地避免`v-model`的循环引用问题,提高代码的质量和可维护性。
156 58
创建vue3项目步骤以及安装第三方插件步骤【保姆级教程】
这是一篇关于创建Vue项目的详细指南,涵盖从环境搭建到项目部署的全过程。
255 1
vue3使用pinia中的actions,需要调用接口的话
通过上述步骤,您可以在Vue 3中使用Pinia和actions来管理状态并调用API接口。Pinia的简洁设计使得状态管理和异步操作更加直观和易于维护。无论是安装配置、创建Store还是在组件中使用Store,都能轻松实现高效的状态管理和数据处理。
169 3
从Vue 2到Vue 3的演进
从Vue 2到Vue 3的演进
105 17
Vue3中v-model在处理自定义组件双向数据绑定时,如何避免循环引用?
Web 组件化是一种有效的开发方法,可以提高项目的质量、效率和可维护性。在实际项目中,要结合项目的具体情况,合理应用 Web 组件化的理念和技术,实现项目的成功实施和交付。通过不断地探索和实践,将 Web 组件化的优势充分发挥出来,为前端开发领域的发展做出贡献。
83 8
除了provide/inject,Vue3中还有哪些方式可以避免v-model的循环引用?
需要注意的是,在实际开发中,应根据具体的项目需求和组件结构来选择合适的方式来避免`v-model`的循环引用。同时,要综合考虑代码的可读性、可维护性和性能等因素,以确保系统的稳定和高效运行。
130 56
在 Vue 3 中,如何使用 v-model 来处理自定义组件的双向数据绑定?
需要注意的是,在实际开发中,根据具体的业务需求和组件设计,可能需要对上述步骤进行适当的调整和优化,以确保双向数据绑定的正确性和稳定性。同时,深入理解 Vue 3 的响应式机制和组件通信原理,将有助于更好地运用 `v-model` 实现自定义组件的双向数据绑定。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等