vue3简介

文章目录

    • 与2.0相比新增
  • vue3
    • 定义props
    • 定义computed
    • props解构
    • context
    • watch监听

与2.0相比新增

· 3.0比2.0 快2倍

· 3.0去掉了filter, 么有beforeCreate created,用setup取代

· reactivity是可以单独作为库使用的

· 单独功能可以抽离 取代了mixin 优于mixin 解决上下反复横跳

· 支持多个子节点 fragment

· setup里没有this

· Proxy实现响应式不需要set delete 兼容性并不好

· 响应式方面 性能得到很大提升 不用初始化的时候就递归遍历属性

· 响应式不区分数组和对象

· 3.0兼容IE12以上

vue3

vue3 将状态,函数,计算结果,生命周期等都定义在setup中,符合组件内高内聚,组件外低耦合的形式

定义状态和函数

定义状态
 setup(props){
	  var firstName = ref("张");  //定义值类型; 值类型在函数中需要调用打点value;
	  var person = reactive({    //定义引用类型;
      name: "王五",
      age: 20,
    });
    const animal = readonly(reactive({    //定义只读状态,不能修改,
      name: "老虎",
      age: "10"
    }))
    function add(){   //定义普通函数,

}
    return{     //将状态或者函数返回出去,在组件中应用;
    } 
}

定义props


  props: ["msg"],
  // 会把父组件传递的数组,“注入”到当前组件的setup形参。
  setup(props) {
    console.log(props.msg);
}

定义computed

import { computed, ref } from "vue";
setup(){
	 var filterMsg = computed(() => props.msg.substr(0, 5));//定义一个普通的
	//定义一个getter和setter
	 var filterCount = computed({
      get() {
        return count.value + 20;
      },
     
      set(val) {
        count.value = val;
      },
    });
}

props解构

因为 props 是响应式的,你不能使用 ES6 解构,因为它会消除 prop 的响应性。
我们可以通过 toRefs方法完成可以解构赋值,且不影响属性的响应式

var {name} = toRefs(props);

context


  setup(props, context) {
	console.log(context.slots.default())   //默认插槽的值;
	console.log(context.attrs.def)  //自定义属性的值;
	  context.emit('myevent', {name: 'hello world'})   //事件发射;
}

watch监听

 // 参数1: 监听的数据。参数2: 回调函数
    watch(firstName, (newValue, oldValue) => {
      // console.log(oldValue); // 旧值
      fullName.value = newValue + lastName.value;
    });
    // 如果监听的数据是一个引用类型,参数1:写成回调函数的形式
    watch(
      () => person.name,
      (newValue, oldValue) => {
        console.log(oldValue);
        console.log(newValue);
      }
    );

你可能感兴趣的:(vue,vue)