Vue组件通信相关问题

1. 组件通信方式有哪些?
父子组件通信:
props 和 event、v-model、 .sync、 ref、 $parent 和 $children
非父子组件通信:
$attr 和 l i s t e n e r s p r o v i d e i n j e c t e v e n t b u s listeners、 provide 和 inject、eventbus、通过根实例 root访问、vuex、dispatch 和 brodcast

2. 子组件为什么不可以修改父组件传递的Prop?
Vue提倡单向数据流,即父级 props 的更新会流向子组件,但是反过来则不行。这是为了防止意外的改变父组件状态,使得应用的数据流变得难以理解。如果破坏了单向数据流,当应用复杂时,debug 的成本会非常高。

3. v-model是如何实现双向绑定的?
v-model 是用来在表单控件或者组件上创建双向绑定的,他的本质是 v-bind 和 v-on 的语法糖,在一个组件上使用 v-model,默认会为组件绑定名为 value 的 prop 和名为 input 的事件。

4. Vuex和单纯的全局对象有什么区别?
Vuex和全局对象主要有两大区别:
1、Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
2、不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

5. 为什么 Vuex 的 mutation 中不能做异步操作?
Vuex中所有的状态更新的唯一途径都是mutation,异步操作通过 Action 来提交 mutation实现,这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

发布了97 篇原创文章 · 获赞 9 · 访问量 2097

猜你喜欢

转载自blog.csdn.net/weixin_45959525/article/details/104557104