当前位置:网站首页>Vue communication and cross component listening state Vue communication
Vue communication and cross component listening state Vue communication
2020-11-06 20:48:00 【Papaya is too fragrant】
Hello everyone ! I am papaya, too fragrant !
as everyone knows , Component based development has brought us convenience , But it also introduces new problems , Data between components is like being separated by an invisible wall , If we want to temporarily have two components communicate directly ,vuex Too big , and $emit It's not easy to maintain provider Out of control This is the time for today's protagonist vue-communication Debut !
vue-communication Introduce
- It's an observable, debugged vue Component communication scheme
- Any relational component can communicate directly
- Support cross component monitoring of data changes
- Support sending offline data
install
yarn add vue-communication
// perhaps npm install vue-communication -D
introduce
import { $sender, $receiver } "vue-communication";
Vue.prototype.$sender = $sender;
Vue.prototype.$receiver = $receiver;
Video tutorial
usage
Basic concepts :
The component exposes two main API One is the sender $sender One is the recipient $receiver, All communication is achieved through these two methods , I hope you will $sender The sender understood as the sending intention , He's sending an intention , Intention is what you want to do .
The type of intention : dataOnce modifyOnce data modify watch
At present, only the above 5 Each intention covers : Send data once and many times , Modify the data one and more times , Monitoring data changes across components
send data :
If A Components are directed only to B Component send once data :
A Directly used in components this.$sender("dataOnce-A-B",{d: " I'm data "})
B Component at any time ( Even if the B It's ok if you haven't mounted it yet , Eat with ease ) Use this.$receiver("dataOnce-A-B") This function returns one Promise object , direct .then Just receive
Send more than once this.$sender("data-A-B"," I'm data ") , This method is called multiple times , The corresponding component will receive the data multiple times
Reception will change , It can't be used because it will be received many times Promise To achieve , Please append callback to parameter this.$receiver("data-A-B",function(data){ // data It's data })
Be careful :
Inside Intention modifier - Components 1- Components 2 Is mandatory , No matter how long your component name is , You have to give the complete ! The same is true for the modified data below , Corresponding to data-A-B This case , The whole string can be called a “ Intention ”,data It's called the intent modifier .
Receiving receipt :
I believe we all understand a truth , If you entrust A to B Delivery , stay A It should not be silent after delivery , It's about telling you , well ! I have already delivered what you asked me to send ! This is the receipt .
It should be noted that receipts are currently available only in one-time operations , for example dataOnce modifyOnce
They passed $sender Back to Promise The object gives , Let the sender know , When was the data I sent received
this.$sender("dataOnce-A-B"," Papaya is too fragrant ")
.then(flag => {
console.log(" The recipient has received the data !")
})
Modifying data :
A Used in components this.$sender("modifyOnce-A-B","name"," Papaya is too fragrant ") Express A The component needs to be modified B In the component name Attributes change him to Papaya is too fragrant
B Used in components this.$receiver("modifyOnce-A-B","name") You can complete the modification , Note that the second parameter must be passed , This is a license , It means that you approve of A Component modifies the current component's name attribute , If you make a mistake or don't transmit it, then the permission doesn't hold , It's an implementation that makes data changes predictable and forces developers to be more aware of what they're doing .
If you want to change obj Under the object name Then it can be written as this.$sender("modifyOnce-A-B","obj.name"," Papaya is too fragrant ")
If you want to modify it many times, you can refer to data An example of intention , Use modify The intention modifier is enough , Be careful , At present, there is no callback in the modification , If you want to know when the data was modified , You can listen inside the component itself .
Listen to data across components :
If A Component to listen to B In the component name Data changes :
A Components use this.$sender("watch-A-B","person.name",function(nv,ov){ // nv Represents the new value ov Old value })
B Components only need to be licensed once : this.$receiver("watch-A-B","person.name")
I built one myself web Front of the exchange skirt, interested can join in the exchange oh :245650187( free )237871108( charge ). Personal wechat : GD6570 Individual ball :718879459 Of course, you can also search Bili Bili papaya is too fragrant
版权声明
本文为[Papaya is too fragrant]所创,转载请带上原文链接,感谢
边栏推荐
- Behind the first lane level navigation in the industry
- The legality of IPFs / filecoin: protecting personal privacy from disclosure
- CloudQuery V1.2.0 版本发布
- 【自学unity2d传奇游戏开发】地图编辑器
- Markdown tricks
- A small goal in 2019 to become a blog expert of CSDN
- ES6 learning notes (5): easy to understand ES6's built-in extension objects
- Read the advantages of Wi Fi 6 over Wi Fi 5 in 3 minutes
- jenkins安装部署过程简记
- Asp.Net Core learning notes: Introduction
猜你喜欢

美团内部讲座|周烜:华东师范大学的数据库系统研究

事务的隔离级别与所带来的问题
![Tron smart wallet PHP development kit [zero TRX collection]](/img/3b/00bc81122d330c9d59909994e61027.jpg)
Tron smart wallet PHP development kit [zero TRX collection]

事务的本质和死锁的原理

理解格式化原理

Behind the first lane level navigation in the industry

Git rebase is in trouble. What to do? Waiting line

To Lianyun analysis: why is IPFs / filecoin mining so difficult?

Unity性能优化整理

Basic usage of Vue codemirror: search function, code folding function, get editor value and verify in time
随机推荐
What knowledge do Python automated testing learn?
【ElasticSearch搜索引擎】
Take you to learn the new methods in Es5
A small goal in 2019 to become a blog expert of CSDN
Use modelarts quickly, zero base white can also play AI!
行为型模式之备忘录模式
html+vue.js 實現分頁可相容IE
CloudQuery V1.2.0 版本发布
事件监听问题
行为型模式之解释器模式
Application of restful API based on MVC
An article will take you to understand SVG gradient knowledge
Tron smart wallet PHP development kit [zero TRX collection]
Pollard's Rho algorithm
What are PLC Analog input and digital input
Installing ns-3 on ubuntu18.04
Helping financial technology innovation and development, atfx is at the forefront of the industry
Git rebase is in trouble. What to do? Waiting line
Unity性能优化整理
Look! Internet, e-commerce offline big data analysis best practice! (Internet disk link attached)