Components are one of the most powerful features of vue.js, and the scopes of component instances are independent of each other, which means that data between different components cannot reference each other. How to transfer data has also become one of the important knowledge points of components.
There are different relationships between components. The relationship between father and son and brother (those who are not father and son are temporarily called brothers).
Original author: Lin Xin, author's blog:
The parent-child relationship is that component A uses component B in its template, then component A is the parent. Component, component B is the sub-component.
1 |
|
When using the father component directly:
1 |
|
The page will render: I am the child component of father!
The father component uses the child component in the template, so it is the parent component, and the child component is used, so the child component is the child component.
If two components do not reference each other, they are sibling components.
1 |
|
When using the component:
1 |
|
The page will render:
I am the big brother
I am a younger brother
If a child component wants to use the data of the parent component, we need to obtain the data passed by the parent component through the props option of the child component. Below I use the format in the .vue file to write the example.
Reference the child component child.vue in the parent component father.vue, and pass the value of name to the child component.
1 |
|
Declare the data it expects to obtain in the props option in the child component child.vue
1 |
|
Then the page will be rendered :Hello linxin
When the name of the parent component changes, the child component will automatically update the view. But in child components, we don't want to modify props. If you must modify these data, you can use the following method:
Method 1: Assign prop to a local variable, and then modify the local variable if you need to modify it, without affecting prop
1 |
|
Method 2: Process prop in calculated properties
1 |
|
prop is one-way bound: When the properties of the parent component change, they will be propagated to the child component, but not the other way around. Modifying the prop value of a child component will not be passed back to the parent component to update the view. So how do child components communicate with parent components?
That is a custom event. By listening to the custom event in the parent component $on(eventName), when $emit(eventName) in the child component triggers the custom event, the parent component performs the corresponding operation.
For example, if you control the display of a pop-up subcomponent in the parent component, after pressing Close in the sub-component, tell the parent component to hide it, and then the parent component will perform the operation to hide the pop-up box.
1 2 |
|
In the child component dialog.vue:
1 |
|
This achieves mutual communication between parent and child components.
The above examples are all based on components of the parent-child relationship, but for other levels of relationships, it is more cumbersome to implement. Then Vuex can better help you communicate in real time between various components. Regarding Vuex, you can check out my other article: Vuex modularizes the status management of to-do items
It is not necessary to use Vuex for component communication. For some simple Data transfer, prop can also be completed. This article mainly records some basic knowledge points about component parameter passing. For actual practice, you can refer to notepad as an example. Use prop to display and hide sub-components, and use vuex to implement data state management between components.
The above is the detailed content of How to pass data between vue.js components. For more information, please follow other related articles on the PHP Chinese website!