Vue에서 제공 및 주입은 무엇이며 어떻게 사용하나요?
Vue.js는 현재 프런트엔드 세계에서 매우 인기 있는 JavaScript 프레임워크입니다. 여기에는 반응형 데이터 바인딩, 구성 요소화된 뷰 아키텍처, 종속성 추적 및 템플릿 렌더링과 같은 뛰어난 기능이 많이 있습니다. 가장 일반적으로 사용되는 기능은 컴포넌트 프로그래밍입니다. Vue는 컴포넌트 등록, 컴포넌트 매개변수 전달 등과 같은 기능 테스트를 제공합니다. 그러나 어떤 경우에는 컴포넌트 데이터 전송에 더 어려운 문제가 발생할 수 있습니다. 이러한 유형의 문제를 해결하기 위해 Vue에서 제공하는 provider
및 inject
를 사용하세요. provide
和 inject
解决这类问题。
理解 provide & inject
provide
Vue2.2.0 版本新增了 provide / inject
, 其能够更好的帮助我们完成面向对象编程的需求。通俗的讲 provide
就是我们可以在父组件中提供数据,然后再子组件中使用 inject
来获取所需要的数据的一个过程。
提供一个例子来更好的理解 provide
:
<template> <!-- 父组件 --> <div> <child-component /> </div> </template> <script> import childComponent from './child-component'; export default { provide: { foo: 'bar' }, components: { childComponent } } </script>
在父组件中,我们向下提供了一个键为 foo
的数据给到子组件中。随后在子组件中我们我可以通过 inject
来获取这份数据。
<template> <!-- 子组件 --> <div> <p>我是子组件,我获取到了一个名为"foo"的属性的值:{{foo}}</p> </div> </template> <script> export default { inject: ['foo'] } </script>
到这里,我们就实现了提供和注入的完整过程。通过 provide
我们在父组件中提供数据,随后再子组件中使用 inject
来获取数据,从而完成了组件之间的数据传递。
inject
inject
是一个数组,列表中声明要注入的属性名。在子组件注入一个对象,该对象的属性名与提供的键名相同,值为提供的数据。
提供一个具体的事例来理解 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>
以上代码中,provide
函数可以理解为父组件向下层子组件提供数据,子组件再通过 inject
来接收这份数据,实现了数据的传输过程。
使用场景
此时,你可能会问:我们已经有了 props 父子组件之间的通信了,为什么还需要 provide/inject
呢?
其实,这两者在使用场景上是不太相同的。以下是一些可使用 provide/inject
实现父子组件通信的一些场景:
- 跨级组件间的通信
在 Vue 中,父子组件之间的通信可以通过 props 实现,但是当跨级组件时,使用 props 传递数据将会变得非常繁琐。而此时可以通过 provide / inject
方式,在祖先组件中提供数据,然后在子孙组件中通过 inject 获取所需数据。
- 父组件不清楚具体的子组件实现
在某些情况下,父组件并不清楚子组件内部的数据具体存放在哪个 props 中,而此时可以通过 provide
的方式将数据传递到子组件中。
- 可以用一个观察者来观察值的变化,帮助组件集成的实现
通过 provide / inject
方式,我们可以将数据提供给子孙组件,给父级留下观察的入口,从而实现组件集成。
- 不适合使用 props 时
在 Vue 中,props 是唯一一种官方的、比较好用的、用于父子之间传递数据的方式。但是在某些情况下,如多个子组件希望使用相同的全局变量、提供的公共方法的情况下,就可以使用 provide / inject
方式。
总结
通过本文的介绍,我们了解到了 Vue 中提供的 provide / inject
的基本用法,以及它们的使用场景。
在使用 provide / inject
的过程中,我们需要注意三点:
-
provide / inject
主要用于高阶插件开发,对于开发普通组件的程序员是不需要掌握的。 - provide 选项应该是一个对象或返回一个对象的函数。这个对象包含可注入其它组件的属性。
-
provide / inject
主要解决的问题是跨层级组件之间的信息传递,常用于插件开发。
最后,当我们遇到跨级组件通信等问题时,就可以使用 provide / inject
제공 및 삽입 이해
제공
Vue2.2.0 버전에는제공/주입
이 추가되어 객체 지향 프로그래밍 요구 사항을 완료하는 데 더 도움이 될 수 있습니다. 일반인의 관점에서 provide
는 상위 구성 요소에 데이터를 제공한 다음 하위 구성 요소에 inject
를 사용하여 필요한 데이터를 얻을 수 있는 프로세스입니다. 🎜🎜provide
를 더 잘 이해하기 위한 예를 제공하세요. 🎜rrreee🎜상위 구성 요소에서는 foo
키가 있는 데이터를 하위 구성 요소에 제공합니다. 그런 다음 하위 구성 요소에서 inject
를 통해 이 데이터를 가져올 수 있습니다. 🎜rrreee🎜이 시점에서 우리는 제공과 주입의 전체 프로세스를 구현했습니다. provide
를 통해 부모 컴포넌트에 데이터를 제공하고, 자식 컴포넌트에 inject
를 사용하여 데이터를 얻어 컴포넌트 간 데이터 전송을 완료합니다. 🎜inject
🎜inject
는 배열이고, 목록에는 주입할 속성 이름이 선언되어 있습니다. 하위 구성 요소에 개체를 삽입합니다. 개체의 속성 이름은 제공된 키 이름과 동일하며 해당 값은 제공된 데이터입니다. 🎜🎜inject
를 이해하기 위한 구체적인 예를 제공하세요. 🎜rrreee🎜위 코드에서 provide
함수는 하위 수준 자식에게 데이터를 제공하는 상위 구성 요소로 이해될 수 있습니다. 그런 다음 하위 구성 요소는 inject
를 전달하여 이 데이터를 수신하고 데이터 전송 프로세스를 구현합니다. 🎜사용 시나리오
🎜이 시점에서 다음과 같이 질문할 수 있습니다. 이미 상위 구성 요소와 하위 구성 요소 간에 props 통신이 있는데provide/inject
가 필요한 이유는 무엇입니까? 🎜🎜실제로 둘은 사용 시나리오에서 상당히 다릅니다. 다음은 provide/inject
를 사용하여 상위-하위 구성 요소 통신을 구현할 수 있는 몇 가지 시나리오입니다. 🎜- 교차 수준 구성 요소 간 통신
provide/inject
를 통해 조상 컴포넌트에 데이터를 제공한 후, 자손 컴포넌트에 인젝션을 통해 필요한 데이터를 얻을 수 있습니다. 🎜- 상위 구성 요소는 하위 구성 요소의 구체적인 구현을 알지 못합니다.
provide
를 통해 하위 컴포넌트에 데이터를 전달할 수 있습니다. 🎜- 관찰자를 사용하여 값의 변화를 관찰하여 구성요소 통합 구현에 도움을 줄 수 있습니다.
제공/주입
을 통해 방법을 사용하면 하위 구성 요소에 데이터를 제공하고 구성 요소 통합을 달성하기 위해 상위 구성 요소에 대한 관찰 진입점을 남길 수 있습니다. 🎜- props가 적합하지 않은 경우
provide / inject
메서드를 사용할 수 있습니다. 🎜요약
🎜 이번 글의 서문을 통해 Vue에서 제공하는provide/inject
의 기본 사용법과 사용 시나리오에 대해 알아보았습니다. 🎜🎜provide / inject
를 사용하는 과정에서 세 가지 점에 주의해야 합니다. 🎜-
provide / inject
는 주로 높은 일반 컴포넌트를 개발하는 프로그래머는 이를 마스터할 필요가 없습니다. - 제공 옵션은 객체이거나 객체를 반환하는 함수여야 합니다. 이 개체에는 다른 구성 요소에 주입할 수 있는 속성이 포함되어 있습니다.
-
제공/주입
해결된 주요 문제는 플러그인 개발에서 자주 사용되는 크로스 레벨 구성 요소 간의 정보 전송입니다.
provide/inject
를 사용하여 문제를 해결할 수 있으며, 이는 보다 편리한 프로그래밍 방법을 제공합니다. , 코드를 더욱 간결하고 이해하기 쉽게 만듭니다. 🎜위 내용은 Vue에서 제공 및 주입은 무엇이며 어떻게 사용하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

HTML 템플릿의 버튼을 메소드에 바인딩하여 VUE 버튼에 함수를 추가 할 수 있습니다. 메소드를 정의하고 VUE 인스턴스에서 기능 로직을 작성하십시오.

vue.js의 시계 옵션을 사용하면 개발자가 특정 데이터의 변경 사항을들을 수 있습니다. 데이터가 변경되면 콜백 기능을 트리거하여 업데이트보기 또는 기타 작업을 수행합니다. 구성 옵션에는 즉시 콜백을 실행할지 여부와 DEEP를 지정하는 즉시 포함되며, 이는 객체 또는 어레이에 대한 변경 사항을 재귀 적으로 듣는 지 여부를 지정합니다.

VUE 멀티 페이지 개발은 vue.js 프레임 워크를 사용하여 응용 프로그램을 구축하는 방법입니다. 여기서 응용 프로그램은 별도의 페이지로 나뉩니다. 코드 유지 보수 : 응용 프로그램을 여러 페이지로 분할하면 코드를보다 쉽게 관리하고 유지 관리 할 수 있습니다. 모듈 식 : 각 페이지는 쉬운 재사용 및 교체를 위해 별도의 모듈로 사용할 수 있습니다. 간단한 라우팅 : 페이지 간의 탐색은 간단한 라우팅 구성을 통해 관리 할 수 있습니다. SEO 최적화 : 각 페이지에는 자체 URL이있어 SEO가 도움이됩니다.

vue.js에서 JS 파일을 참조하는 세 가지 방법이 있습니다. & lt; script & gt; 꼬리표;; mounted () 라이프 사이클 후크를 사용한 동적 가져 오기; Vuex State Management Library를 통해 수입.

vue.js는 이전 페이지로 돌아갈 수있는 네 가지 방법이 있습니다. $ router.go (-1) $ router.back () 사용 & lt; router-link to = & quot;/quot; Component Window.history.back () 및 메소드 선택은 장면에 따라 다릅니다.

vue.js가 트래버스 어레이 및 객체에 대한 세 가지 일반적인 방법이 있습니다. V- 결합 지시문은 V-FOR와 함께 사용하여 각 요소의 속성 값을 동적으로 설정할 수 있습니다. .MAP 메소드는 배열 요소를 새 배열로 변환 할 수 있습니다.

VUE에서 DIV 요소를 점프하는 두 가지 방법이 있습니다. VUE 라우터를 사용하고 라우터 링크 구성 요소를 추가하십시오. @Click 이벤트 리스너를 추가하고 이것을 호출하십시오. $ router.push () 메소드를 점프하십시오.
