Home Web Front-end JS Tutorial What are the Vue data transfer techniques?

What are the Vue data transfer techniques?

May 09, 2018 am 11:42 AM
transfer Which Skill

This time I will bring you what are the vue data transfer techniques, and what are the notes of vue data transfer. The following is a practical case, let's take a look.

Preface

Recently I have encountered a lot of questions about vue’s eventBus. I was also asked when I was deciding on technology selection. The usage scope of vuex and eventBus. So just write it down. At the same time, there is a special implementation solution.

There are several data transfer methods, vuex, props, eventBus and special eventBus.

vuex

If you don’t introduce it, you will only look down if the data volume and complexity are not up to it.

props

demo

Parent and child components pass values, official api, just write a demo .

1. Parent component

<son :info="info" @update="updateHandler"/>
// data
info: 'sendToSon'
// methods
updateHandler (newVal) {
 this.info = newVal
}
Copy after login

2. Child component

// props
props: ['info']
// 向上传值,某个方法中使用
this.$emit('update', 'got')
Copy after login

Parent passes value to child-->props The child passes the value to the parent-->Sub-component bindingEventThe callback is defined in the parent component, and the child component triggers this event. Because it is not recommended to directly modify the props passed in the parent component in the child component, you need to use custom events.

Restrictions

Parent and child components.

eventBus

demo

bus are all imported bus instances

// bus
const bus = new Vue()
// 数据接收组件
// 当前组件接收值则
bus.$on('event1', (val)=>{})
// 数据发出组件
// 当前组件发出值则
bus.$emit('event1', val)
Copy after login

It can be seen that the essence is a vue instance acting as an event Binding medium. Use it in all instances for data communication.

Two (multiple) parties use events with the same name to communicate.

Problem

  1. When $emit, $ must be on, otherwise the event will not be monitored, that is to say There are certain simultaneous requirements for components. (Note: When routing is switched, the new routing component is created first, and then the old routing component is destroyed. In some cases, these two lifecycles can be written separately, see this question).

  2. $on will not automatically unbind after the component is destroyed. If the same component is generated multiple times, the event will be bound multiple times, and it will $emit once and respond multiple times. Additional processing.

  3. The data is not "long-term" data and cannot be saved. It only takes effect after $emit.

So is there a more suitable solution?

Special eventBus?

demo

Let’s take a look at the code first, the online code. buses are all imported bus instances.

// bus
const bus = new Vue({
 data () {
  return {
   // 定义数据
   val1: ''
  }
 },
 created () {
  // 绑定监听
  this.$on('updateData1', (val)=>{
   this.val1 = val
  })
 }
})
// 数据发出组件
import bus from 'xx/bus'
// 触发在bus中已经绑定好的事件
bus.$emit('update1', '123')
// 数据接收组件
{{val1}}
// 使用computed接收数据
computed () {
 val1 () {
  // 依赖并返回bus中的val1
  return bus.val1
 }
}
Copy after login

Different

  1. The orthodox eventBus is only used to bind and trigger events, and does not care about data. Intersect with data. This solution takes one more step to add data directly to the bus instance. And event monitoring and data addition need to be defined in advance.

  2. The data receiver no longer uses $on to learn about data changes, but passively receives it by calculating the characteristics of attributes.

Solution to the problem

Do communication components need to exist at the same time? The data is stored on the bus, so there are no requirements.

Bind multiple times? The binding monitors are all on the bus and will not be bound repeatedly.

Data is only available after $emit? Use calculated properties to directly read the value stored on the bus without triggering the event again.

Discuss

Why use calculated properties

In fact, it should be why it cannot be added directly to data, such as data1: bus .data1? We can look at another piece of code, online code. Change the bus to

data () {
 return {
  // 多一层结构
  val: {
   result: 0
  }
 }
},
created () {
 this.$on('update1', val => {
  console.log('触发1', i1++)
  this.val.result = val
 })
}
Copy after login

and change the data receiving component to

// template
data中获取直接修改值:{{dataResult}}
data中获取直接修改值的父层:{{dataVal}}
computed中依赖直接修改值:{{computedResult}}
// js
data () {
  return {
   // 获取直接修改值
   dataResult: bus.val.result,
   // 获取直接修改值的父层
   dataVal: bus.val
  }
 },
 computed: {
  computedResult () {
   // 依赖直接修改值
   return bus.val.result
  }
 }
Copy after login

. You can see that the data that directly modifies the value cannot be dynamically responded to in the data.

Why use events

In fact, there is no need to $emit trigger, it is also possible to use bus.val = 1 to directly assign the value, so why not do this?

Simplified version of vuex

In fact, this eventBus is a simplified version of vuex. There is this passage in the vue documentation:

components are not allowed to directly modify the state belonging to the store instance, but should execute action to distribute (dispatch) events to notify the store to change. We finally achieved this Flux architecture. The advantage of this agreement is that we can record all state changes that occur in the store.

store corresponds to the bus instance, state corresponds to data, action corresponds to the event, and dispatch corresponds to $emit. At the same time, the way components in vuex obtain data is through calculated properties, so in fact, it is not that difficult to understand and use the vuex and Flux architecture, right?

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Recommended reading:

What are the steps for query dynamic parameter passing in vue-router

The local development environment cannot be used How to handle IP access

vue processes data obtained by storejs

The above is the detailed content of What are the Vue data transfer techniques?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Are there any tips for drawing lucky bags on Douyin? How? Are there any tips for drawing lucky bags on Douyin? How? Mar 07, 2024 pm 06:52 PM

Lucky bag activities on Douyin have always been popular among users. By participating, you can not only get various discounts and gifts, but also have the chance to win big prizes. However, newbies may not understand how to draw lucky bags effectively and increase their chances of winning. This article will share with you some tips for drawing lucky bags on Douyin to help you better enjoy the fun of drawing and increase the possibility of winning big prizes. 1. Choose popular lucky bag recommendations and follow the official website: On the Douyin platform, the official often launches some popular lucky bag activities, which can often be seen on the homepage or related channels. These events are usually very popular and the prizes are generous. Therefore, it is a wise move to pay attention to official recommendations. Before opening the lucky bag, it is recommended that you read the comments and reviews of other users. By understanding other people’s lottery winning experiences and opinions on lucky bags

Win11 Tips Sharing: Skip Microsoft Account Login with One Trick Win11 Tips Sharing: Skip Microsoft Account Login with One Trick Mar 27, 2024 pm 02:57 PM

Win11 Tips Sharing: One trick to skip Microsoft account login Windows 11 is the latest operating system launched by Microsoft, with a new design style and many practical functions. However, for some users, having to log in to their Microsoft account every time they boot up the system can be a bit annoying. If you are one of them, you might as well try the following tips, which will allow you to skip logging in with a Microsoft account and enter the desktop interface directly. First, we need to create a local account in the system to log in instead of a Microsoft account. The advantage of doing this is

A must-have for veterans: Tips and precautions for * and & in C language A must-have for veterans: Tips and precautions for * and & in C language Apr 04, 2024 am 08:21 AM

In C language, it represents a pointer, which stores the address of other variables; & represents the address operator, which returns the memory address of a variable. Tips for using pointers include defining pointers, dereferencing pointers, and ensuring that pointers point to valid addresses; tips for using address operators & include obtaining variable addresses, and returning the address of the first element of the array when obtaining the address of an array element. A practical example demonstrating the use of pointer and address operators to reverse a string.

What are the tips for novices to create forms? What are the tips for novices to create forms? Mar 21, 2024 am 09:11 AM

We often create and edit tables in excel, but as a novice who has just come into contact with the software, how to use excel to create tables is not as easy as it is for us. Below, we will conduct some drills on some steps of table creation that novices, that is, beginners, need to master. We hope it will be helpful to those in need. A sample form for beginners is shown below: Let’s see how to complete it! 1. There are two methods to create a new excel document. You can right-click the mouse on a blank location on the [Desktop] - [New] - [xls] file. You can also [Start]-[All Programs]-[Microsoft Office]-[Microsoft Excel 20**] 2. Double-click our new ex

VSCode Getting Started Guide: A must-read for beginners to quickly master usage skills! VSCode Getting Started Guide: A must-read for beginners to quickly master usage skills! Mar 26, 2024 am 08:21 AM

VSCode (Visual Studio Code) is an open source code editor developed by Microsoft. It has powerful functions and rich plug-in support, making it one of the preferred tools for developers. This article will provide an introductory guide for beginners to help them quickly master the skills of using VSCode. In this article, we will introduce how to install VSCode, basic editing operations, shortcut keys, plug-in installation, etc., and provide readers with specific code examples. 1. Install VSCode first, we need

Oracle database query skills: get only one piece of duplicate data Oracle database query skills: get only one piece of duplicate data Mar 08, 2024 pm 01:33 PM

Oracle database query skills: To obtain only one piece of duplicate data, specific code examples are required. In actual database queries, we often encounter situations where we need to obtain the only piece of data from duplicate data. This article will introduce how to use Oracle database techniques to obtain only one record in duplicate data, and provide specific code examples. Scenario Description Suppose we have a table named employee, which contains employee information. There may be duplicate employee information. We need to find all duplicates

PHP programming skills: How to jump to the web page within 3 seconds PHP programming skills: How to jump to the web page within 3 seconds Mar 24, 2024 am 09:18 AM

Title: PHP Programming Tips: How to Jump to a Web Page within 3 Seconds In web development, we often encounter situations where we need to automatically jump to another page within a certain period of time. This article will introduce how to use PHP to implement programming techniques to jump to a page within 3 seconds, and provide specific code examples. First of all, the basic principle of page jump is realized through the Location field in the HTTP response header. By setting this field, the browser can automatically jump to the specified page. Below is a simple example demonstrating how to use P

Win11 Tricks Revealed: How to Bypass Microsoft Account Login Win11 Tricks Revealed: How to Bypass Microsoft Account Login Mar 27, 2024 pm 07:57 PM

Win11 tricks revealed: How to bypass Microsoft account login Recently, Microsoft launched a new operating system Windows11, which has attracted widespread attention. Compared with previous versions, Windows 11 has made many new adjustments in terms of interface design and functional improvements, but it has also caused some controversy. The most eye-catching point is that it forces users to log in to the system with a Microsoft account. For some users, they may be more accustomed to logging in with a local account and are unwilling to bind their personal information to a Microsoft account.

See all articles