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>;
  },
});


相关文章
|
8天前
|
JavaScript
Vue3中路由跳转的语法
Vue3中路由跳转的语法
111 58
|
1天前
|
存储 API
vue3中如何动态自定义创建组件并挂载
vue3中如何动态自定义创建组件并挂载
|
7天前
|
JavaScript 索引
Vue 2和Vue 3的区别以及实现原理
Vue 2 的响应式系统通过Object.defineProperty来实现,它为对象的每个属性添加 getter 和 setter,以便追踪依赖并响应数据变化。
22 9
|
8天前
|
JavaScript 开发工具
vite如何打包vue3插件为JSSDK
【9月更文挑战第10天】以下是使用 Vite 打包 Vue 3 插件为 JS SDK 的步骤:首先通过 `npm init vite-plugin-sdk --template vue` 创建 Vue 3 项目并进入项目目录 `cd vite-plugin-sdk`。接着,在 `src` 目录下创建插件文件(如 `myPlugin.js`),并在 `main.js` 中引入和使用该插件。然后,修改 `vite.config.js` 文件以配置打包选项。最后,运行 `npm run build` 进行打包,生成的 `my-plugin-sdk.js` 即为 JS SDK,可在其他项目中引入使用。
|
6天前
|
JavaScript 调度
Vue3 使用 Event Bus
Vue3 使用 Event Bus
11 1
|
7天前
|
JavaScript
Vue3 : ref 与 reactive
Vue3 : ref 与 reactive
9 1
vue3 reactive数据更新,视图不更新问题
vue3 reactive数据更新,视图不更新问题
|
8天前
|
JavaScript
|
8天前
vue3定义暴露一些常量
vue3定义暴露一些常量
|
7天前
Vue3 使用mapState
Vue3 使用mapState
10 0