⭐️ 作者:船长在船上
🚩 主页:来访地址船长在船上的博客
🔨 简介:高级前端开发工程师,专注前端开发,欢迎咨询交流,共同学习
🔔 感谢:如果觉得博主的文章不错或者对你的工作有帮助或者解决了你的问题,可以关注、支持一下博主,如果三连收藏支持就会更好了,在这里博主不胜感激!!!
如有疑问可以留言、评论,看到后会及时回复。

目录
vue2开发缺点和vue3开发优点
- setup(){
- console.log('自动执行')
- const name = '林一'
- const age = 20
- const company = '阿里巴巴'
-
- const btn = ()=>{
- const res = `我叫${name},今年${age}岁了,在${company}上班`
- console.log(res)
- }
-
- // 计算属性
- // 侦听器
- return {name,btn}
- }
import { onBeforeMount, ....... } from 'vue'
- //安装
- npm install vuex@next --save
- //引入
- import {useStore} from 'vuex'
- import {toRef} from 'vue'
- //toRef接收两个参数,第一个参数是要操作的对象,第二个参数是对象的某个属性
- const obj = {name:'林一'}
- toRef(obj,'name')
- setup(){
-
- const obj = {name:'林一',age:40}
- // const res = ref(obj.name)
- const res = toRef(obj,'name')
- const btn = ()=>{
- res.value = '林二'
- console.log(res)
- console.log(obj)
- }
- return {res,btn}
- }
- import {ref} from 'vue'//组合式api
- ref('林一')
- setup(){
- const name = ref('林一')
- const age = ref(52)
- const company = ref('阿里巴巴')
- // 对象类型
- const obj = ref({
- taobao:'淘宝',
- tamll:'天猫'
- })
- // 数组类型
- const arr = ref([
- {
- xiami:'林二',
- huabei:'京东'
- }
- ])
- const btn = ()=>{
- // 响应对象类型
- // name.value = '林三'
- // obj.value.taobao = '淘宝000'
- // console.log(obj)
- // 响应数组类型
- arr.value[0].xiami = '京东000'
- console.log(arr)
- }
- return {name,age,company,btn,obj,arr}
- }
- //第一种:进入页面即刻传值(祖孙传值)
- const p1 = reactive({name:'林一',age:52})
- provide('p',p1)//祖传
-
- const res = inject('p')//孙收
-
- //第二种:点击传值
- <Vue ref="val"/>//引入子组件,使用ref调用该子组件
- const val = ref()
- const p1 = reactive({name:'林一',age:52})
- function btn(){
- val.value.receive(p1)
- }
import { shallowReactive,shallowRef } from 'vue'
- setup() {
- //shallowReactive:只处理第一层的数据
- const p1 = shallowReactive({
- name:'林一',
- product:{
- taobao:5
- }
- })
- // shallowRef:只处理基本类型数据
- const p2 = shallowRef({
- val:1
- })
- console.log(p2)
- return{...toRefs(p1),p2}
- },
import { watchEffect } from 'vue'
- setup() {
- const p1 = ref(0)
- const p2 = ref(1)
- const p3 = reactive({
- name:'林一',
- age:50,
- product:{
- wx:14
- }
- })
- const S = watchEffect(()=>{
- const a = p1.value
- const b = p2.value
- console.log('进入页面我就执行')
- })
- S()//停止监听
- return {p1,p2,p3}
- },
mport { watch } from 'vue'
- setup() {
- const p1 = ref(0)
- const p2 = ref(1)
- const p3 = reactive({
- name:'林一',
- age:50,
- product:{
- wx:14
- }
- })
- // 一:侦听ref的基本数据
- // watch(p1,(newVal,oldVal)=>{
- // console.log(newVal,oldVal)
- // },{immediate:true})//{immediate:true}立即侦听
-
- // 二:侦听多个ref响应数据
- // watch([p1,p2],(newVal,oldVal)=>{
- // console.log(newVal,oldVal)
- // })
-
- // 三:侦听整个reactive定义的数据:只能监听到最新的结果,之前的结果监听不到
- // watch(p3,(newVal,oldVal)=>{
- // console.log(newVal,oldVal)
- // })
-
- // 四:侦听reactive定义的数据中的某一个值:可以监听到,无论层级有多深
- watch(()=>p3.product.wx,(newVal,oldVal)=>{
- console.log(newVal,oldVal)
- })
- return {p1,p2,p3}
- },
import { computed } from 'vue'
- setup() {
-
- const mayun = ''
- const huateng = ''
- const res = reactive({linyi,liner})
-
- // 计算年龄总和
- const sum = computed({
- get(){
- return res.linyi + res.liner
- },
- set(val){
- console.log(val)
- }
- })
-
- return {...toRefs(res),sum}
- }
- import { reactive } from 'vue'
- reactive({name:'林一'})
- setup(){
- // const name = reactive({name:'林一'})
- // const age = reactive({age:20})
- // const company = reactive({company:'阿里巴巴'})
- // // 深层次响应式
- // const pro = reactive({
- // a:'淘宝',
- // b:'天猫',
- // c:{
- // d:'京东',
- // e:'顺丰'
- // }
- // })
- const btn = ()=>{
- // name.name = '林二'
- // age.age = 40
- // pro.c.d = '京东0000'
- res.name = '林三'
- }
- // 共用一个reactive
- const name = '林四'
- const age = 52
- const company = '阿里巴巴'
- const res = reactive({name,age,company})
-
-
- return {res,btn}
- }
- import {toRefs} from 'vue'
- toRefs(obj)
- setup(){
- const obj = {name:'林一',age:40}
- const refs = reactive(obj)
- // const res = toRefs(refs)
- const btn = ()=>{
- // res.name.value = '林三'
- // console.log(res)
- console.log(refs)
- refs.name = '林二'
- console.log(refs)
- console.log(obj)
- }
- return {...toRefs(refs),btn}
- }
👉👉👉 欢迎来访船长在船上的博客,如有疑问可以留言、评论,看到后会及时回复。