What is provide & inject in Vue and how to use it?
Vue.js is a very popular JavaScript framework in the current front-end world. It has many excellent features such as responsive data binding, componentized view architecture, dependency tracking, and template rendering. The most commonly used function is component programming. Vue provides us with functional tests such as component registration, component parameter passing, etc. However, in some cases, the transmission of component data will encounter more difficult problems. At this time , we can use the provide
and inject
provided in Vue to solve this type of problem.
Understanding provide & inject
provide
Vue2.2.0 version has added provide / inject
, which can better help us complete object-oriented Programming needs. In layman's terms, provide
is a process in which we can provide data in the parent component, and then use inject
in the child component to obtain the required data.
Provide an example to better understand provide
:
<template> <!-- 父组件 --> <div> <child-component /> </div> </template> <script> import childComponent from './child-component'; export default { provide: { foo: 'bar' }, components: { childComponent } } </script>
In the parent component, we provide a key with the key foo
The data is given to the subcomponent. Then in the subcomponent we can get this data through inject
.
<template> <!-- 子组件 --> <div> <p>我是子组件,我获取到了一个名为"foo"的属性的值:{{foo}}</p> </div> </template> <script> export default { inject: ['foo'] } </script>
At this point, we have implemented the complete process of provision and injection. Through provide
we provide data in the parent component, and then use inject
in the child component to obtain the data, thus completing the data transfer between components.
inject
inject
is an array, and the property names to be injected are declared in the list. Inject an object into the subcomponent. The object's property name is the same as the provided key name, and its value is the provided data.
Provide a specific example to understand inject
:
<!-- 祖先组件: --> <template> <div> <div>我是祖先组件</div> <slot></slot> </div> </template> <script> export default { provide() { return { name: 'Colin' } } } </script> <!-- 父组件 --> <template> <div> <div>我是父组件</div> <child-component /> </div> </template> <script> import childComponent from 'view/child-component.vue'; export default { components: { childComponent } } </script> <!-- 子组件: --> <template> <div> <div>我是子组件</div> <p>祖先组件中给我的数据是什么呢? {{ name }}</p> </div> </template> <script> export default { inject: ['name'] } </script>
In the above code, the provide
function can be understood as the parent component providing to the lower-level sub-component Data, the sub-component receives this data through inject
, realizing the data transmission process.
Usage scenarios
At this point, you may ask: We already have props communication between parent and child components, why do we need provide/inject
?
In fact, the two are not the same in usage scenarios. The following are some scenarios where provide/inject
can be used to implement parent-child component communication:
- Communication between cross-level components
In Vue, Communication between parent and child components can be achieved through props, but when cross-level components are used, passing data using props will become very cumbersome. At this time, you can provide data in the ancestor component through provide / inject
, and then obtain the required data through inject in the descendant component.
- The parent component does not know the specific implementation of the sub-component
In some cases, the parent component does not know which props the internal data of the sub-component is stored in. At this time, the data can be passed to the child component through provide
.
- You can use an observer to observe changes in values to help implement component integration
Through the provide / inject
method, we can put the data It is provided to descendant components and leaves an observation entrance for the parent to achieve component integration.
- When it is not suitable to use props
In Vue, props are the only official and easy-to-use way to transfer data between father and son. . But in some cases, such as when multiple sub-components want to use the same global variables and provided public methods, you can use the provide / inject
method.
Summary
Through the introduction of this article, we have learned about the basic usage of provide / inject
provided in Vue, as well as their usage scenarios.
In the process of using provide / inject
, we need to pay attention to three points:
-
provide / inject
is mainly used for high-level Plug-in development does not need to be mastered by programmers who develop ordinary components. - The provide option should be an object or a function that returns an object. This object contains properties that can be injected into other components.
-
provide / inject
The main problem solved is the information transfer between cross-level components, which is often used in plug-in development.
Finally, when we encounter problems such as cross-level component communication, we can use provide / inject
to solve the problem. It provides us with a more convenient programming method. Make our code more concise and understandable.
The above is the detailed content of What is provide & inject in Vue and how to use it?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Using Bootstrap in Vue.js is divided into five steps: Install Bootstrap. Import Bootstrap in main.js. Use the Bootstrap component directly in the template. Optional: Custom style. Optional: Use plug-ins.

You can add a function to the Vue button by binding the button in the HTML template to a method. Define the method and write function logic in the Vue instance.

There are three ways to refer to JS files in Vue.js: directly specify the path using the <script> tag;; dynamic import using the mounted() lifecycle hook; and importing through the Vuex state management library.

The watch option in Vue.js allows developers to listen for changes in specific data. When the data changes, watch triggers a callback function to perform update views or other tasks. Its configuration options include immediate, which specifies whether to execute a callback immediately, and deep, which specifies whether to recursively listen to changes to objects or arrays.

Vue multi-page development is a way to build applications using the Vue.js framework, where the application is divided into separate pages: Code Maintenance: Splitting the application into multiple pages can make the code easier to manage and maintain. Modularity: Each page can be used as a separate module for easy reuse and replacement. Simple routing: Navigation between pages can be managed through simple routing configuration. SEO Optimization: Each page has its own URL, which helps SEO.

Vue.js has four methods to return to the previous page: $router.go(-1)$router.back() uses <router-link to="/" component window.history.back(), and the method selection depends on the scene.

You can query the Vue version by using Vue Devtools to view the Vue tab in the browser's console. Use npm to run the "npm list -g vue" command. Find the Vue item in the "dependencies" object of the package.json file. For Vue CLI projects, run the "vue --version" command. Check the version information in the <script> tag in the HTML file that refers to the Vue file.

There are three common methods for Vue.js to traverse arrays and objects: the v-for directive is used to traverse each element and render templates; the v-bind directive can be used with v-for to dynamically set attribute values for each element; and the .map method can convert array elements into new arrays.
