什么是生命周期钩子?

接着上次的来讲,上从我们使用到了一个created()函数,

其实这个created()函数,就是生命周期钩子 。每个Vue 实例都严格遵守着一个生命周期,包括多个环节:创建、挂载到新页面、更新、销毁。钩子 是一组特殊的函数,会在某个特殊的时间点被调用。举个例子:在创建Vue实例的时候调用一个方法,可以使用created()

下面来看一下每个环节的生命周期钩子:

  • beforeCreate :在Vue实例被创建时(例如使用new Vue({}) )、完成其他事项之前调用。

  • created :在实例准备就绪之后调用。注意,此时实例还没有挂载到DOM中。

  • beforeMount :在挂载(添加)实例到Web页面之前调用。

  • mounted :当实例被挂载到页面并且DOM可见时调用。

  • beforeUpdate :当实例需要更新时(一般来说,是当某个数据或计算属性发生改变时)调用。

  • updated :在把数据变化应用到模板之后调用。注意此时DOM可能还没有更新。

  • beforeDestroy :在实例销毁之前调用。

  • destroyed :在实例完全销毁之后调用。

上次最后我们想要保存笔记本的更改,下次打开应用时能够加载并呈现出来。那么我们就可以使用created 钩子来恢复笔记内容。

new Vue({// ...// 当实例准备就绪会调用这个钩子created() {// 将content设置为存储的内容// 如果没有保存任何内容则设置为一个默认字符串this.content = localStorage.getItem('content') || 'You can write in
** markdown ** '},
//注意‘||’,若前面表达式结果为假,则会设置后半句,即之前没有保存过任何内容
})

当然,对于数据的保存加载,我们也可以不使用生命周期钩子,直接在数据中初始化 ,就是用恢复出来的值直接初始化content数据属性,在data()中做更改:

new Vue({// ...data() {return {content: localStorage.getItem('content') || 'You can write in
**markdown**',}},
})

2. 多条笔记

2.1 添加笔记列表

我们要制作的是一个笔记本,应该具有能力容纳多条笔记,而不是只能记住一条内容。可以在界面的左边添加一个新的侧边栏来呈现出笔记列表,然后增加一些功能按钮,例如:重命名、收藏等。

  • 跟创建预览面板一样,我们需要为笔记列表栏设置一个aside 元素,其calss设置为sider-bar:

  • 添加一个新的数据属性,名为notes 。这个属性是一个数组,包含了所有的笔记:

2.1.1 添加新建笔记的方法

每一条笔记都应该有下面的属性:

  • id :笔记的唯一标识符。
  • title :笔记的标题,用来显示在笔记列表中。
  • content :笔记的Markdown格式内容。
  • created :笔记创建的日期。
  • favorite :这是一个布尔值,用于表示是否收藏了笔记,已收藏的笔记显示在笔记列表的顶部。

添加一个名为addNote的方法,它会用默认值创建一个新的笔记对象:

Code:

2.1.2 用 v-on 实现按钮的单机事件

我们需要一个添加笔记的按钮,因此在左侧边栏中添加一个新的按钮,在index.html文件中加入:

运行一下在浏览器看看效果:

2.1.3 用 v-bind 绑定属性

创建笔记的时候我们并不知道有多少条笔记,如果能够有一个提示,提示现在已经有多少条笔记就更方便了,这里使用 v-bind 指令来绑定title属性(title属性是当鼠标悬浮在元素上方时,可以显示title的信息)

Code:

<button v-bind:title="notes.length + ' note(s) already'">
<!--简写: <button :title="notes.length + ' note(s) already'">
-->

2.1.4 用 v-for 显示列表

想要在左边栏显示笔记列表的标题,则需要使用 v-for 指令来实现,看看需要在index.html添加的代码:

再次刷新浏览器,添加几条新的笔记,看看效果:

Vue项目:Markdown笔记本(中)相关推荐

  1. Vue项目在标签中如何书写多个内敛style样式

    Vue项目在标签中如何书写多个内敛style样式 例如:对一个数组进行循环,我想给偶数项的添加红色背景,奇数项的添加蓝色背景,这时候就可以用v-bind:style="[]",详细 ...

  2. vue项目在vscode中编译eslint报错没显示红色波浪线提示

    vue项目在vscode中编译eslint报错没显示红色波浪线提示. 如下图所示: 下图是预期效果: 不符合Eslint校验规则的代码位置都能展示出来,这样一目了然.能帮助我们迅速找到报错的位置. 然 ...

  3. vue项目在IE中显示空白,报错:vuex requires a Promise polyfill in this browser

    问题描述 vue项目在非IE内核的浏览器中显示正常,在IE内核浏览器中报错,并显示空白.报错如下: SCRIPT5022:  [vuex] vuex requires a Promise polyfi ...

  4. antimalware service executable占用内存_解决 vue 项目运行过程中内存泄漏问题

    vue-cli3.0 内存溢出 JavaScript heap out of memory vue-cli3.0构建的项目,开发过程中,可能会遇到内存溢出的情况,改动一点代码,代码编译,进程就会断掉, ...

  5. vue项目,webpack中配置src路径别名及使用

    默认会有'@'别名,指向src目录,还可以添加自定义别名等等. 使用方法 使用别名一般就三种情况:在js中用,在css中用,在html文档内用 js中用,最简单: import {getName} f ...

  6. 离职后才搞懂vue项目开发流程中的疑惑点

    在离职的最后一个月,帮两位同事申请加薪,确切的说,申请加薪是导火索,我被扣上了哄抬同事工资以提高自己工资的帽子,在推动前后端分离工作中处处碰壁,点燃了压抑许久的离职冲动,领导培养自己四五年,不让声张, ...

  7. vue项目在ie9中碰到的问题——axios请求拒绝访问

    一.axios在IE9下面Promise不能使用. https://www.cnblogs.com/zhengyan/p/8111203.html Pormise的问题,原来是Axios不能直接兼容I ...

  8. 在Vue 项目 webpack 打包中关于 背景图片的路径问题

    第一次发segmentfault ,记录一下关于最近生产环境,开发环境路径问题. 开发环境下我们可以在vue中引入相对路径,但在生产环境,会默认为根目录static,所以我们需要在config 目录下 ...

  9. 关于VUE项目地图开发中大量点标记绘制一些总结

    问题说明 在地图开发中,当地图中绘制大量的标记点后,无论是拖动或者缩放,都会感觉到明显的卡顿现象.(一般超过800个点后就比较明显了).在平时的工作业务中,由于公司的实时监控页面需要展现5000-20 ...

最新文章

  1. Tomcat源码分析(六)--日志记录器和国际化
  2. linux 脚本socket通信,Linux实例:用socket通讯远程执行命令
  3. .NET中Flags枚举的使用
  4. java thread_Java(多线程Thread)
  5. 计算机应用怎么拼写,计算机应用本科论文提纲格式范文 计算机应用本科论文提纲如何写...
  6. verilog设置24进制计数器_阅读笔记:《Verilog HDL入门》第3章 Verilog语言要素
  7. python docx表格宽度_RPA手把手——python-docx 设置 word 文档中表格格式
  8. Toolkit.getDefaultToolkit().getScreenSize();获取显示器屏幕大小并使JFrame窗口居中显示
  9. Cheggit解析器模块分析
  10. 湖南计算机非全学校推荐,小心!湖南这7所大学害人不浅,毕业证一文不值,各位家长注意了...
  11. Modbus通讯两种传输方式
  12. Android开发之 shape的使用
  13. 类实现接口,必须实现接口的全部方法么?
  14. java面试简历项目经验,java面试题项目中的难点
  15. centos journalctl日志查看
  16. PM3嗅探数据采集密码自动提取密码工具
  17. java jbutton 省略号_JButton显示省略号
  18. Docker端口映射实现网络访问
  19. andorid pppoe拨号上网
  20. 计算机上自带的打字游戏,在学校上电脑课打字游戏的日子

热门文章

  1. 考研数学笔记 51~55
  2. SXSSFWorkbook 转 InputStream
  3. AD09 DXP保姆级教程系列——005、原理图生成PCB、裁剪板子、3维查看、封装PCB元件
  4. Python标准库笔记(9) — functools模块
  5. 高等工程热力学复习05
  6. 华为超级计算机叫什么名字,华为超级计算机打破世界纪录,是否超越了我国第一的“神威太湖之光”?...
  7. LVMH和Tiffany的“爱情买卖”,黄了!
  8. 锐捷交换机部署snooping+DAI功能
  9. C/C++ 中memset()
  10. mac 更换淘宝镜像 bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)