vue之props传值与单向数据流
(1)组件通信
父组件向子组件传递数据。这个正向传递数据的过程就是通过props来实现的。
两者区别:props中声明的数据与组件data函数return返回的数据的主要区别就是props来自父级,而data中是组件自己的数据,作用域是组件本身,这两种数据都可以在模板template、计算属性computed、方法methods中使用。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>demo1</title>
<script type="text/javascript" src="vue-2.6.9.min.js"></script>
</head>
<body>
<div id="demo">
<textarea v-model="message" v-bind:placeholder="placeholder"></textarea>
<demo-component v-bind:message="message"></demo-component>
</div>
<script type="text/javascript">
Vue.component('demo-component',{
props:['message'],
template:`
<div class="demo-area">
{{message}}
</div>
`
});
var demo = new Vue({
el:'#demo',
data:{
message:'来自父级的数据',
placeholder:'请输入'
}
})
</script>
</body>
</html>
(2)单向数据流
业务中会经常遇到两种需要改变props的情况,一种是父组件传递初始值进来,子组件将它作为初始值保存起来,在自己的作用域下可以随意使用和修改。这种情况可以在组件data中再声明一个数据,引用父组件的prop
<div id="demo">
<demo-component v-bind:initcount="initcount"></demo-component>
</div>
<script type="text/javascript">
Vue.component('demo-component',{
props:['initcount'],
template:`
<div class="demo-area">
{{count}}
</div>
`,
data:function(){
return {
count:this.initcount
}
}
});
var demo = new Vue({
el:'#demo',
data:{
'initcount':'1'
}
});
</script>
组件里声明了数据count,它在组件初始化时会获取来自父级组件的initcount,之后便与之无关,只用维护count,这样就可以避免直接操作initcount。
(3)另一种情况就是prop作为需要被转变的原始值传入,这种情况用计算属性即可。
<div id="demo">
<demo-component v-bind:width="width"></demo-component>
</div>
<script type="text/javascript">
Vue.component('demo-component',{
props:['width'],
template:`
<div class="demo-area" v-bind:style="style">
组件内容
</div>
`,
computed:{
style(){
return {width:this.width+'px'};
}
}
});
var demo = new Vue({
el:'#demo',
data:{
'width':
}
});
</script>
.
vue之props传值与单向数据流的更多相关文章
- vue第十八单元(单向数据流 vuex状态管理)
第十八单元(单向数据流 vuex状态管理) #课程目标 1.理解什么是数据管理模式 2.什么是vuex 3.什么时候使用vuex 4.vuex安装及工作原理 5.vuex语法 #知识点 1.首先来看下 ...
- Vue props 单向数据流
1.props通信 注意:DOM模板的驼峰命名props要转为短横分割命名. <!DOCTYPE html> <html lang="zh"> <he ...
- Vue 父子组件传值 props
1.Vue 的渲染周期: vue 如何实现响应式追踪. 父子组件通信有很多方式,今天单独聊下props 的方式.我们通过查找官方文档很容发现,props传值有静态和动态两种传值方式. 当然props ...
- Vue 组件&组件之间的通信 之 单向数据流
单向数据流:父组件值的更新,会影响到子组件,反之则不行: 修改子组件的值: 局部数据:在子组件中定义新的数据,将父组件传过来的值赋值给新定义的数据,之后操作这个新数据: 如果对数据进行简单的操作,可以 ...
- vue第九单元(非父子通信 events 单向数据流)
第九单元(非父子通信 events 单向数据流) #课程目标 了解非父子组件通信的原理,熟练实现非父子组件间的通信(重点) 了解单向数据流的含义,并且明白单向数据流的好处 #知识点 #1.非父子组件间 ...
- vue 单向数据流 & 双向绑定
在react中是单向数据绑定,而在vue中的特色是双向数据绑定.但是其实就我个人的理解是: 其实无论是vue还是react其实还是提倡单向数据流去管理状态,这一点在vuex和redux状态管理器上体现 ...
- 关于Vue中props的详解
看一下官方文档: 组件实例的作用域是孤立的.这意味着不能 (也不应该) 在子组件的模板内直接引用父组件的数据.父组件的数据需要通过 prop 才能下发到子组件中. 也就是props是子组件访问父组件数 ...
- vue-父子组件之传值和单项数据流问题
前言 我们知道 vue 中父子组件的核心概念是单项数据流问题,props 是单项传递的.那究竟什么是单项数据流问题,这篇文章来总结一下关于这个知识点的学习笔记. 正文 1.父组件传值给子组件 < ...
- React 精要面试题讲解(一) 单向数据流
react 单向数据流概念 'react框架是怎样的数据流向?'||'react单向数据流是怎样的概念 ?' 解答这个问题之前,我们首先得知道,js框架是个怎样的概念. 框架:具备一定**编程思想** ...
随机推荐
- CentOS6.0忘记root密码解决办法
说明操作系统:CentOS 6.0遇到问题:忘记管理员账号root的密码,进不了系统解决办法:重置root密码为123456操作: 开机启动系统,在进入系统之前按键盘上面的Esc键,会进入下面的界面 ...
- Velocity魔法堂系列一:入门示例(转)
Velocity魔法堂系列一:入门示例 一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本 ...
- 通过实现ServletContextListener接口创建数据库连接池(C3P0方式)
使用Listener步骤 1. 定义Listener实现类 2. 在web.xml中配置(或使用Annotation) 使用C3P0方式创建数据库连接池需要添加的jar包 1.c3p0-0.9.5.j ...
- (2)css的复合选择器与特性
css的复合选择器与特性 在本篇学习资料中,将深入了解css的相关概念,上一篇介绍的3种基本选择器的基础上,学习3种由基本选择器复合构成的选择器,然后再介绍css的两个重要的特性. 1.复合选择器 复 ...
- Ubuntu 下Python和pip的版本
首先python只是个指向特定版本的软链接,具体指向那个是可以我们自己设置的, 而在Ubuntu中默认是指向python2的,并且python2其实也是个指向特定版本的软链接 所以我们要做的就是删除这 ...
- 从零开始通过idea插件将一个spring boot项目部署到docker容器里运行
实操:将一个spring boot项目部署到docker容器里运行 实验需要的环境: 腾讯云+Ubuntu 16.04 x64+idea+插件docker integration+daocloud 第 ...
- Linux基本命令—mkfs/mount/umount/wget/yes/make/passwd
mkfs:用来在特定的分区建立Linux文件系统,是make filesystem的缩写. 例子:mkfs .ext3 /dev/mmcblk0p1 //把该设备格式化成ext3文件系统 m ...
- vs2013问题解决办法—>fatal error LNK1168 如何避免
问题:在使用visial studio 2013运行成功程序,但当修改其中的一段后,即语法,执行后报错 出现error:fatal error LNK1168:无法打开……\xxx.exe进行写入. ...
- Angular广播/消息通知的接收与发送
一.在接收页:添加引用: private eventManager: JhiEventManager: 接收通知的方法: // 接收通知(新建.编辑.删除页发送过来的通知) // upmsMenuLi ...
- javax.xml.bind.UnmarshalException: 意外的元素 (uri:"", local:"xml")。所需元素为(none)
将xml转换为object时候报错:javax.xml.bind.UnmarshalException: 意外的元素 (uri:"", local:"xml") ...