zoukankan      html  css  js  c++  java
  • vue3 一些关键属性

    环境搭建

    • 尤大开发了一个项目构建工具vite
     npm init vite-app <project-name>
     cd <project-name>
     npm install
     npm run dev
    

    创建实例

    • 之前是new Vue({})的形式来创建实例,vue3添加了一个新的方法--->creatApp
    import {createApp} from 'vue'
    const app =createApp({})
    
    //////////////////////// 
    import {
        createApp
    } from 'vue'
    import App from './App.vue'
    const app = createApp(App)
    app.mount('#app')
    
    
    <template> 
    	<!-- 可以有多个节点 -->
    	<h1>hello world</h1>
    	<h1>x:{{ position.x }} y:{{ position.y }}</h1>
    </template>
    
    <script>
    import { reactive } from 'vue';
    // import HelloWorld from './components/HelloWorld.vue';
    
    export default {
    	name: 'App',
    	// components: {
    	// 	HelloWorld
    	// },
    	setup() { //数据入口
    		let position = reactive({}); //构建响应式对象
    		window.addEventListener('mousemove', e => {
    			position.x = e.pageX;
    			position.y = e.pageY;
    		 	// console.log(position);
    		});
    		return { position }; //最后要暴露出这个数据
    	}
    };
    </script>
    
    

    选项式api 与 组合式api

    • 解决逻辑关注点分散的问题

    vue2:选项式api,

    image-20201218142857048

    vue3 :组合式api,写在setup()中,setup中没有this

    export default {
    	name: 'App',
    	// components: {
    	// 	HelloWorld
    	// },
    	setup() { //数据入口
            console.log('setup中的this为',this) //输出: setup中的this为 undefined
    		let position = reactive({}); //构建响应式对象
    		window.addEventListener('mousemove', e => {
    			position.x = e.pageX;
    			position.y = e.pageY;
    		 	// console.log(position);
    		});
    		return { position }; //最后要暴露出这个数据
    	}
    };
    

    ref

    创建一个响应式变量

    const time = ref(0); //创建值类型的变量 number  string
    

    reactive

    • vue2中存在一个Vue.observable方法,用来返回一个可响应的对象,在vue2中,data函数返回一个对象,vue内部会用Vue.observable 来处理
    const position = reactive({
        //创建响应对象
        x: 0,
        y: 0,
        info: computed(() => {
        return `当前位置在 X: ${position.x} Y:${position.y}`;
        })
    });
    

    toRef

    可以用来为源响应式对象上的 property 性创建一个 ref。然后可以将 ref 传递出去,从而保持对其源 property 的响应式连接。

    const state = reactive({
      foo: 1,
      bar: 2
    })
    //三种方式创建变量
    const fooToRef = toRef(state, "foo"); // fooToRef++  可以响应,state.foo同台改变
    const fooRef = ref(state.foo); //无现象 stata不变
    let foo = state.foo;//无现象 stata不变
    

    通过上面的小测试可以看到,toRef是将变量与响应式对象建立引用关系,变量改变时可以改变源响应对象

    toRefs

    参考地址

    • 作用:让props中的值变成响应式的

    传入的props是响应式的,会实时更新,传递给setup就能直接使用

    export default {
      props: {
        title: String
      },
      setup(props) {
        console.log(props.title)
      }
    }
    

    每次调用props中的属性都需要用 props.[属性名]的形式,书写复杂,考虑到es6的解构赋值

    但是使用es6解构会消除prop的响应性,所以使用toRefs来简化写法

    props:{
    user:{
        type:String
        }
    }
    import{toRefs} 'vue' 
    
    const { user } = toRefs(props)
    

    watch

    参考

    watchEffect

    占坑

    生命周期

    选项式 API Hook inside setup
    beforeCreate Not needed*
    created Not needed*
    beforeMount onBeforeMount
    mounted onMounted
    beforeUpdate onBeforeUpdate
    updated onUpdated
    beforeUnmount onBeforeUnmount
    unmounted onUnmounted
    errorCaptured onErrorCaptured
    renderTracked onRenderTracked
    renderTriggered onRenderTriggered
  • 相关阅读:
    atitit.ntfs ext 文件系统新特性对比
    Atitit.图片木马的原理与防范 attilax 总结
    Atitit.图片木马的原理与防范 attilax 总结
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.jdk java8的语法特性详解 attilax 总结
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit.远程接口 监控与木马   常用的api 标准化v2 q216
    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结
    Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216  java c# php js.docx
  • 原文地址:https://www.cnblogs.com/genhao7/p/14231725.html
Copyright © 2011-2022 走看看