环境搭建

  • 尤大开发了一个项目构建工具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,

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

vue3 一些关键属性的更多相关文章

  1. VUE3 之 Non-Props 属性

    1. 概述 墨菲定律告诉我们:人总是容易犯错误的,无论科技发展到什么程度,无论是什么身份的人,错误总是会在不经意间发生.因此我们最好在做重要的事情时,尽量去预估所有可能发生的错误,并思考错误发生后的补 ...

  2. TCustomControl绘制自己和图形子控件共四步,TWinControl关键属性方法速记

    TCustomControl = class(TWinControl) private FCanvas: TCanvas; procedure WMPaint(var Message: TWMPain ...

  3. Redis(二):redis命令构建及关键属性解析

    上一篇文章,我们从框架层面,主要介绍了redis的启动过程,以及主要的命令处理流程逻辑.这些更多的都是些差不多的道理,而要细了解redis,则需要更细节的东西. 今天我们稍微内围的角度,来看看几个命令 ...

  4. CSS:布局的三个关键属性:float、position、display

    最近在出差,就我一个在这里.客户要做几个页面,涉及到了页面的布局问题,没办法自己得做了.然后就遇到了一些问题.页面不论怎么都不能按照设想的布局. 以前也没有做过网页布局方面的工作.上网上找类似的例子, ...

  5. 【笔记】W3C CSS关键属性

    white-space属性: white-space 属性设置如何处理元素内的空白. 可能的值 值 描述 normal 默认值,合并所有空格,换行符会被浏览器忽略 pre 空白会被浏览器保留.其行为方 ...

  6. RTB业务知识之2-Impression概念和关键属性

    一.定义-impression This object describes an ad placement or impression being auctioned. A single bid re ...

  7. HttpSession的关键属性和方法

    1.当一个用户向服务器发送第一个请求时,服务器为其建立一个session,并为此session创建一个标识号:2.这个用户随后的所有请求都应包括这个标识号.服务器会校对这个标识号以判断请求属于哪个se ...

  8. 关于vue3的inheritAttrs属性和$attrs的部分用法

    当我们在父组件中想要为子组件的某一个标签添加一些样式(注意,这里的是指attributes,css样式只是其中一种属性而已) <show-message id="lkx" c ...

  9. [PHP] 编写爬虫获取淘宝网上所有的商品分类以及关键属性 销售属性 非关键属性数据

    参考文章地址:https://blog.csdn.net/zhengzizhi/article/details/80716608 http://open.taobao.com/apitools/api ...

随机推荐

  1. UVA 10480 Sabotage (最大流最小割)

    题目链接:点击打开链接 题意:把一个图分成两部分,要把点1和点2分开.隔断每条边都有一个花费,求最小花费的情况下,应该切断那些边. 这题很明显是最小割,也就是最大流.把1当成源点,2当成汇点. 问题是 ...

  2. 【uva 12174】Shuffle(算法效率--滑动窗口)

    题意:假设一种音乐播放器有一个乱序的功能,设定每播放S首歌为一个周期,随机播放编号为1~S的歌曲.现在给一个长度为N的部分播放记录,请统计下次随机排序所发生的时间的可能性种数.(1≤S,N≤10000 ...

  3. poj2411 Mondriaan's Dream (用1*2的矩形铺)

    Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, af ...

  4. Codeforces Round #671 (Div. 2) B. Stairs (递推)

    题意:一个台阶由一些单元格组成,如果一个高度为\(n\)的台阶中有\(n\)个不相邻的正方形(如图中的样例),就称这个台阶是"好台阶",现给你\(x\)个单元格,问最多能组成多少个 ...

  5. K8S(02)管理核心资源的三种基本方法

    系列文章说明 本系列文章,可以基本算是 老男孩2019年王硕的K8S周末班课程 笔记,根据视频来看本笔记最好,否则有些地方会看不明白 需要视频可以联系我 管理k8s核心资源的三种基本方法: 目录 系列 ...

  6. Maven与Nexus3.x环境构建详解

    一.Maven介绍Apache Maven是一个创新的软件项目管理和综合工具.Maven提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资料片管理项目构建,报告和文件. ...

  7. 【非原创】codeforces 1025D - Recovering BST【区间dp+二叉搜索树】

    题目:戳这里 题意:给一个不下降序列,有n个数.问能否构造一个二叉搜索树,满足父亲和儿子之间的gcd>1. 解题思路:其实这题就是构造个二叉搜索树,只不过多了个条件.主要得了解二叉搜索树的性质, ...

  8. c# 类(2)

    构造函数 和 析构函数 Constructors and destructors 构造函数是一个特殊的函数,当实例化一个类的时候自动调用这个函数,无返回值(不用定义返回类型)普通函数的定义 publi ...

  9. BZOJ1001 狼抓兔子(网络流转最短路:对偶图)

    题意: 给一个如图形式的\(n*m\)的方格,从左上走到右下,给出边权,问分成两块所需的最小代价.\(n,m\leq1000\). 思路: 显然是个最小割,但是\(O(n^2m)\)的复杂度很高,虽然 ...

  10. 牛客多校第九场 && ZOJ3774 The power of Fibonacci(二次剩余定理+斐波那契数列通项/循环节)题解

    题意1.1: 求\(\sum_{i=1}^n Fib^m\mod 1e9+9\),\(n\in[1, 1e9], m\in[1, 1e4]\) 思路1.1 我们首先需要知道斐波那契数列的通项是:\(F ...