vue2.X组件学习心得(新手必看篇)
VUEJS学习网址:https://cn.vuejs.org/ 此文章是用来记录自己的学习和实践心得。 关注点: 父子组件之间的通信看图说话: Pass Props子组件本身与父组件是孤立的,通过子组件中显示声明的props属性,接收父组件数据; 父组件的数据更新时,子组件的prop会跟着更新; 此数据流动是单向的(看着); Emit Events子组件使用$.emit(fn)向外抛出自己的内部触发的事件; 父组件是否监听?如果父组件需要监听,使用v-on绑定监听,触发对应事件; 以上为通用语,具体分析 子组件可以接收一个字符串,在子组件内部可以用{{label}}使用 子组件可以接收动态参数 子组件接收到数据之后想处理一下不小心改了怎么办? 给prop创建一个副本(建议深拷贝),处理副本,不动prop; 父组件的数据改变后,子组件的prop会自动更新,但是这个prop的副本不会啊? 使用watch监听这个prop,改变时更新副本; 子组件的prop副本改变了想要通知父组件怎么办? 使用watch监听这个副本,改变时向外抛出自己的内部触发的事件; 。。。 其实以上???在2.3有了更好的方法,之前的就是看看。 .sync修饰符我是用了一下然后喜闻乐见的修改成功了,
讲真,说到这里我自己都不明白要slot干嘛。 官方讲解入口 官方给了个布局的例子: 主要内容的一个段落。 另一个主要段落。
但是好像也没什么好推荐的。(个人看法) 再想想: |
<pre class="brush:xhtml;">
var bus = new Vue();
// 触发组件 A 中的事件
bus.$emit('id-selected',1)
bus.$on('id-selected',function (id) {
// ...
})
<pre class="brush:xhtml;">
匿名slot:
slot标签存在与子组件template中;
子组件在父组件中使用的时候,子组件标签中的结构会在编译后替换子组件的slot标签;
如果子组件中没有slot,则父组件中子组件标签中的内容会消失;
具名slot:
顾名思义,是具有name属性的slot标签;并有匿名组件的特性(以上);
子组件在父组件中使用的时候,子组件中的结构中会有某些标签拥有slot属性并赋值,这些会在编译后替换子组件的相应slot标签;