vue里的数据

背景:


一个项目完工在即,鉴于此,前端使用了vue,写下此栏,以供日后翻阅,
会涉及到我所运用到的vue相关知识,需要一定的js基础。
默认vue的single-file-components(单文件组件开发)既sfc。

本文主题

vue里数据的处理

存放数据

我们先看vue里哪里能存放数据:

1.单个vue文件里。
2.官方插件vuex,作为一个集中管理经常复用的数据很有用。
3.直接声明在vue实例上,用$号标识。

第一种情况下存放数据对于单个文件又分这几种属性
1.1 data(常规使用,默认函数返回:忘记为啥了)
1.2 computed(计算,也就说,这是一个基于其他属性的属性)
1.3 watch(监听属性,官方推荐在此分类下的属性用于触发异步函数)
1.4 props(特殊,用来接收父组件向子组件传递的属性)
1.5 propsData(特殊,貌似是用来测试的)

第二种情况下数据存放都在state里
第三种情况是特别特别特别的,不讨论(都有vux,还用什么$号啊)。


数据传递

数据传递也分几种情况
1.全局传递。
2.父向子传递。
3.子向父传递。

第一种情况,请使用vuex,注意刷新会清空
第二种情况,子声明props,父在子组件上声明这个属性,就能传递下去
第三种情况,一般情况就用事件提交,父监听子声明的事件,然后就能接收到了

这里对props和事件做个特殊说明,假如运用了第三方的vue框架,你可能就是封装一下
对方的组件使其变成专用的子组件,这个时候,方法啊,属性啊,都在第三方组件上
而你封装的木有。如果一个个在去声明,第三方组件的props或者event着实累,自然有
简便的api啦。vm.$attrs,vm.$listener,然后你封装的子组件就把所有事件和属性都会被
第三方的组件所监听。vm.$listener,除法你开发了特殊的指令,否则,不用官网那样声明,第三方声明的事件都会被监听。


数据的修改

有以下几个note:
1.computed


别去修改,本身就是基于依赖,但是computed是个很好的展示数据容器。它原本是只有get方法,但是可以声明set方法。

2.watch


有两个属性,deep和immediate,一个是深度检测,一个是立即执行,相当于任务队列的第一个触发,deep不如直接用"foo.bar"的形式来监视.

如果同时监视N个属性,而这几个属性又都有关联性,个人推荐,这个时候,不要用watch,不如去监听事件,用switch语句更加方便,尤其是在有异步方法存在的时候,异步队列搞得心都碎了。

3.props


最好有默认值

4.比较简单便捷的方式,是引用某个组件,参开api里的ref。

            原文地址:https://segmentfault.com/a/1190000016820628

原文地址:https://www.cnblogs.com/lalalagq/p/9900945.html

时间: 2024-11-09 22:52:30

vue里的数据的相关文章

vue里面的get、post和jsonp

使用vue里面的get可以获取文件数据,当获取文件数据的使用的用法是 使用get获取php文件执行结果时就是在前面的案例的get方法中传入php文件,然后设置和php相对应的数据,如下 js代码 php代码 需要注意的是,php文件中,方括号里面的名称才是与js里面的名称一致,如图所示 post使用方法与get基本相似,就是在此基础上添加一个数据:emulateJSON: true 演示结果如下图所示 post方法的php代码 需要注意的是,粗看之下,连个php文件差异不大,但是php文件里面分

vue里的渲染以及computed的好处

如果vue里的某个methods函数执行,导致页面重新渲染,那么所有的methods函数会重新执行以及时的渲染页面 但是大量函数的重新没有必要的执行会导致性能的下降, 此时如果把没有必要再次执行的方法定义到computed里,那么这些没有必要执行的方法就不会被渲染页面时候执行. 只有在computed函数所依赖的数据变化时候才会被执行 1 <div id="app"> 2 <div></div> 3 <p>{{num}}</p>

Vue 更新Data数据页面无反应问题

问题描述 更新了data里的数据,页面无同步变化 原因分析 原因1:存在this指向问题,没有真正更新到data 原因2:Vue不能检测对象属性的添加或删除 原因3:更新的层级太深 解决方法 处理原因1:存储外部环境this指针,在异步回调函数中使用 var self = this; $.get({ url: '/api', success: function(res){ self.list = res.data; } }) 处理原因2:可以使用Vue.set()函数 var self = th

vue里store被意外修改

还是接着上次那个接手的项目,还是那里面的bug.还是在编辑信息的时候,用户信息是存在store里的,从个人中心页面点击编辑按钮到编辑页面,此时是正常的,但是如果在编辑页面修改了东西,没有保存,按道理来说下次进入编辑界面的时候是不应该保持上一次编辑的信息的.于是我翻看了代码里绑定数据的对象,果然,有一句代码引起了我的注意: 这句看似平常的一句代码,实际却“暗藏杀机”,打印了一下每次执行这句话之前infos的值,发现只要编辑了表单,store里infos的值也被改了,vue-store的官网上明确的

自动从DataRow里取数据给属性赋值

public abstract class ModelsBase     { //自动从DataRow里取数据给属性赋值 public void RightDataFrom(DataRow row) { Type type = this.GetType(); //遍历每一个属性 foreach (PropertyInfo prop in type.GetProperties()) { //判断是否可写入 if (prop.CanWrite == false) continue; //判断Data

java导出数据库里的数据至Excel进行数据备份

调用部分: package com.otdrmsys.action; import com.otdrmsys.util.ResultSetToExcel; public class ExcelExport { public static void main(String[] args) { // String fileName = "otdr";//文件名,不带路径,不带.xls后缀 // String [] coloumItems = {"otdr编号",&quo

String强制转换为Date,freemarker标签里date数据的显示问题

String强制转换为Date,freemarker标签里date数据的显示问题 http://blog.sina.com.cn/s/blog_617f5d090101ut63.html (2014-05-16 16:44:34) 转载▼   分类: 工作 解决了两个问题 1. String强制转换为Date SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");    String dateStr = request.g

运用反射原理的简单工厂模式和运用反射原理从数据库里读出数据直接封装到实体集合里

一:简单工厂 最初学习的一个运用简单工厂的例子是做一个计算器: 首先是接口 public interface Cal { public double Calcu(double num1,double num2); } 然后是加减乘除类实现计算接口: public class Add implements Cal{ @Override public double Calcu(double num1, double num2) { return num1+num2; } } 再写一个工厂类,里面有一

桌面支持--Excel表格里的数据全部变成了时间或者日期格式的时候怎么办???

20150601 问题描述:Excel表格里的数据全部变成了时间或者日期格式的时候怎么办??? 解决办法: 1. 打开Excel,任意选中一单元格,单击鼠标右键,选择设置单元格格式. 2. 在数字自定义类型中,找到如图中前缀为[$-F400]的类型格式(或者类似的比如[$-F800]),点击删除.3. 保存,大功告成!再次打开,世界清静了.