当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- What knowledge do Python automated testing learn?
- (2) ASP.NET Core3.1 Ocelot routing
- Will blockchain be the antidote to the global epidemic accelerating the transformation of Internet enterprises?
- Contract trading system development | construction of smart contract trading platform
- C# 调用SendMessage刷新任务栏图标(强制结束时图标未消失)
- DC-1靶機
- Even liver three all night, jvm77 high frequency interview questions detailed analysis, this?
- An article will take you to understand SVG gradient knowledge
- What are the criteria for selecting a cluster server?
- An article takes you to understand CSS pagination examples
猜你喜欢

What is the purchasing supplier system? Solution of purchasing supplier management platform

How to play sortable JS vuedraggable to realize nested drag function of forms

The AI method put forward by China has more and more influence. Tianda et al. Mined the development law of AI from a large number of literatures

【学习】接口测试用例编写和测试关注点

MongoDB与SQL常用语法对应表

Live broadcast preview | micro service architecture Learning Series live broadcast phase 3

大会倒计时|2020 PostgreSQL亚洲大会-中文分论坛议程安排

Swagger 3.0 brushes the screen every day. Does it really smell good?

How about small and medium-sized enterprises choose shared office?

It is really necessary to build a distributed ID generation service
随机推荐
What course of artificial intelligence? Will it replace human work?
Contract trading system development | construction of smart contract trading platform
GUI engine evaluation index
FastThreadLocal 是什么鬼?吊打 ThreadLocal 的存在!!
一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试
What are PLC Analog input and digital input
大数据处理黑科技:揭秘PB级数仓GaussDB(DWS) 并行计算技术
Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
StickEngine-架构12-通信协议
Building a new generation cloud native data lake with iceberg on kubernetes
How to demote domain controllers and later in Windows Server 2012
How to turn data into assets? Attracting data scientists
In depth to uncover the bottom layer of garbage collection, this time let you understand her thoroughly
Isn't data product just a report? absolutely wrong! There are university questions in this category
DRF JWT authentication module and self customization
游戏主题音乐对游戏的作用
PHP application docking justswap special development kit【 JustSwap.PHP ]
How to understand Python iterators and generators?
For a while, a dynamic thread pool was created, and the source code was put into GitHub
Application of restful API based on MVC