IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue3 的点点滴滴 -> 正文阅读

[JavaScript知识库]vue3 的点点滴滴

setup

相当于 beforeCreate + created

beforeDestroy ==> beforeUnmount

setup(props, ctx) {
  console.log(props, ctx)
}
ctx : {attrs, emit, slots}
复制代码

vue 3.2

<script setup>
import { ref } from 'vue'

const color = ref('red')
</script>

<template>
  <button @click="color = color === 'red' ? 'green' : 'red'">
    Color is: {{ color }}
  </button>
</template>

<style scoped>
button {
  color: v-bind(color);
}
</style>
复制代码

reactive, ref, toRefs 响应式变量

const { reactive, toRefs } = Vue


 const state = reactive({ value: 'reactive' })
    return { state }
    
    
复制代码

ref:创建单个的响应式的对象

setup() {
 const  whahah= ref(1)
    return { whahah } ==> {{whahah}}
    
    
//定义响应式变量
const state = reactive({ value: 'reactive' , batchId:'sewew',fileNo:'fdfdsfdsf'})
//将state中的变量单独拎出来
    return toRefs(state)  ==>{{value}}{{fileNo}}
    
    return {state} ==> {{state.fileNo}}
}
复制代码

watch watchEffect comoputed

    setup() {
    	ref(() => computed(() => {
        return x'x'x
        })
    }
     const state = reactive({ count: 0, value: 1 })
    watch(
      () => state.count, //watch 这个值
      val => { // newValue,oldVlalue
        console.log('watch', state.count)
        console.log('watch', state.value)
      }
    )
    watchEffect(() => { //执行次数== effect内部effective 变量的个数
      console.log('effect', state.count)
      console.log('effect', state.value)
    })

 

复制代码
  • watchEffect 函数

    • 不用直接指定要监视的数据, 回调函数中使用的哪些响应式数据就监视哪些响应式数据
    • 默认初始时就会执行第一次, 从而可以收集需要监视的数据
    • 监视数据发生变化时回调
    • 不能获取之前数据的值 只能获取当前值

生命周期变化

Vue2Vue3
beforeCreatesetup(替代)
createdsetup(替代)
beforeMountonBeforeMount
mountedonMounted
beforeUpdateonBeforeUpdate
updatedonUpdated
beforeDestroyonBeforeUnmount
destroyedonUnmounted
errorCapturedonErrorCaptured

vue3 :

Vue.createApp().mount(App, '#app')
const app = createApp(Root)

app.config.globalProperties.author='走投无路不怕死'

app.use(router)
    .use(store)
    
    .mount("#app")
复制代码

vue2

new Vue({
  el: '#app',
  store,
  router,
  render: (h) => h(App),
})
复制代码

getCurrentInstance

getCurrentInstance?支持访问内部组件实例。


const { proxy,ctx} = getCurrentInstance() 
ctx.$refs

proxy.$confirm("此作将永久删除该数据, 是否继续?", "提示", {

confirmButtonText: "确定",

cancelButtonText: "取消",

type: "error",

})
复制代码
const { proxy } = getCurrentInstance();
复制代码

codes

import { provide } from "vue";
provide("reload", () => {

    routerAlive.value = Math.random() + "_" + Math.random();

});
复制代码
<style lang="scss" scoped>

.el-main {

    height: calc(100vh - v-bind(nav_height));

    background: $main-bg-color;

    :deep(.el-scrollbar__bar.is-horizontal) {

        visibility: hidden;

    }

}

</style>
复制代码
<script>

export default {

data: () => ({

description: "拼图小游戏",

}),

};

</script>

 


<script setup>

import { ref, onBeforeUpdate } from "vue";

let url = require("../../../assets/logo.png");

const img = ref(url);

const show_img = ref(false);

const txt = ref("查看原图");

const divs = ref([]);

const arr = ref([]);

const success = ref(false); //游戏状态
</script>
复制代码

定义props

import { toRefs, defineProps } from "vue";

const props = defineProps({

title: {

type: String,

require: true,

},

});

const { title } = toRefs(props);
复制代码

emits

const emit = defineEmits(['action'])
emit('action',params)
复制代码

expose 定义可供其他组件通过ref来访问本组件时可以获得的属性

defineExpose({ setHtml, getHtml, clearnHtml })
// parent component
box <- ref()
box.value.setHtml()
复制代码

router

import { useRouter,useRoute } from "vue-router";
router = useRouter()
route = useRoute()
router.push({name:xxx})
route.query
复制代码

computed

 
const count = ref(1)
const plusOne = computed({
  get: () => count.value + 1,
  set: val => {
    count.value = val - 1
  }
})

plusOne.value = 1 //也是.value
console.log(count.value) // 0
复制代码

error [] as Array()报错 eslint 误报Parsing error: Unexpected token

my resolution:升级如下组件到最新.

"@typescript-eslint/eslint-plugin": "^5.3.1",
"@typescript-eslint/parser": "^5.3.1",
复制代码

原因可能是我升级了 typescript "typescript": "~4.4.4",

error element-plus 无法正常使用

requires at least ESLint v7.1.0

Syntax Error: Error: Error while loading rule '@typescript-eslint/no-loss-of-precision': @typescript-eslint/no-loss-of-precision requires at least ESLint v7.1.0 Occurred while linting /Users/chencunsheng/Dian/projects/special-test-period-2/de2-vue3-web-admin/src/main.ts

Syntax Error: TypeError: eslint.CLIEngine is not a constructor

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:27:19  更:2022-07-21 21:28:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/11 12:38:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码