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框架入门学习(二)声明式渲染实现一个页面定时器(理解Vue组件的data方法和mounted方法) -> 正文阅读

[JavaScript知识库]Vue3框架入门学习(二)声明式渲染实现一个页面定时器(理解Vue组件的data方法和mounted方法)

昨天入门Vue3搞了一个HelloWorld玩玩,今天还是准备从官网的例子入手学习,不管什么框架,官网的例子和文档是最先要学习的。

Vue3的组件渲染方式应该有几种,最简单直观的一种组件渲染方式就是声明式渲染,说白了就是用html按照Vue的模板语法定义一个组件模板

上模板代码

<!--定义一个简单的html模板-->
<div id="counter">
  Counter: {{ counter }}
</div>

定义一个Vue组件

此处最重要的是要搞明白组件里的两个方法data()mounted(),data方法会被Vue框架在创建组件实例的过程中悄悄调用,data方法返回一个Json键值对对象,该对象会在组件的$data属性里也存一份。而mounted方法是Vue组件生命周期中的一个钩子方法,Vue组件生命周期除了mounted方法外还有beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、activated、deactivated、beforeUnmount、unmounted、errorCaptured、renderTracked、renderTriggered12个钩子方法。从名字上也能看得出来,这些钩子方法涵盖了一个Vue组件从开始创建到销毁的整个过程。

/*定义一个定时器组件*/
const CounterApp = {
  data(){
    return{
      counter: 0
    }
  },
  mounted(){
    setInterval( function(){
      this.counter++;
    }, 1000 );
  }
};
/*调用全局方法createApp创建一个Vue应用,并通过调用mount方法与id为counter的模板绑定*/
Vue.createApp( CounterApp ).mount( "#counter" );

运行一下,竟然报了一个错误,Uncaught TypeError: el.addEventListener is not a function

?

点开报错那一行的源码进去看了看,不是自己页面脚本的问题,然后又去Vue官网文档看了看,发现是多引入了一个vue.esm-browser-3.1.5.js,其实只要引入一个vue.global-3.1.5.js就好了

去掉vue.esm-browser-3.1.5.js后虽然不报错了,但是页面上的定时器却没有发生变化。于是加上万能断点alert语句调试一下

?

?结果弹出“[object HTMLDivElement]

没有办法只能使出最狠的一招了,直接查看官网例子的源代码,分析原因主要是有两个,一是应该在组件内给定时器定义一个变量,二是this指针传递有问题,修改一下

?

再运行一下,定时器可以正常工作了。

?

ok,再加个功能按钮,点一下停止定时器。这就涉及到Vue组件里的事件绑定了,查阅Vue官网文档后,得知可以通过v-on?指令 (通常缩写为?@?符号) 来监听 DOM 事件,并在触发事件时执行一些 JavaScript。用法为?v-on:click="methodName"?或使用快捷方式?@click="methodName",还是蛮简单的,改一下代码

?

再运行调试一下,定时器正常工作,点击“停止定时器”按钮也能停止。搞定收工!

-------------------------简单分割线-------------------------

今天的代码已打包,需要的请自行下载,链接: https://pan.baidu.com/s/1GX1Qt3ocRWBaYxPDUSvlgw 提取码: nyyc

我的个人订阅号(大叔学前端/dashu_fe),感兴趣的可以关注下,谢谢!

?

?

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

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 21:28:06-

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