- 인접한 수준의 상위 구성 요소와 하위 구성 요소 간의 값 전송에만 적용 가능
- props를 사용하여 다중 수준 구성 요소의 값을 전송할 수도 있지만 이렇게 하면 코드를 유지 관리하기가 어려워지기 때문에 매우 권장되지 않습니다. .
- eventBus: 상태는 vuex와 유사하며 모든 구성 요소에 적합하며 매우 관대합니다.
문제:
- 유지 관리가 불편한 경우. 프로젝트에서 너무 많이 사용하면 메소드 이름 충돌로 인해 예외가 발생할 수 있으며 문제 해결이 더 불편합니다. 예:
rrreeerrreeerrreeerrreee
$attrs / $listeners🎜🎜🎜$attrs🎜🎜🎜공식 설명🎜: 🎜🎜 속성이 상위 구성 요소에서 사용자 정의 하위 구성 요소로 전달됩니다. 수신된
prop
가 없으면 자동으로 하위 구성 요소 내부의 가장 바깥쪽 태그로 설정됩니다.class
및style
인 경우 가장 바깥쪽 태그는class
및style
입니다. 🎜🎜하위 구성 요소가 상위 구성 요소에서 전달한prop
가 아닌 속성을 상속하지 않으려는 경우inheritAttrs
를 사용하여 상속을 비활성화한 다음를 전달할 수 있습니다. >v-bind="$attrs"
외부에서 전달된 비prop
속성을 원하는 태그로 설정하지만class
및style
🎜🎜 🎜🎜부모 컴포넌트가 자식 컴포넌트에 값을 전달하지만 자식 컴포넌트가 전달된 값을 모두 props에 선언하지 않은 경우, 자식 컴포넌트에서 <를 사용할 수 있습니다. 모든 상위 구성요소를 얻기 위해 프록시에 대한 code>$attrs 전달된 값입니다. 🎜🎜예: 이것은 상위 구성 요소입니다.🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜이것은 하위 구성 요소입니다. 선언된 소품이 없습니다.🎜🎜🎜🎜🎜🎜🎜이것은 dom 디스플레이입니다:🎜🎜 🎜🎜 🎜- 此时,通过dom可以发现,所有没有声明的信息,全部出现在了子组件的根元素上。
- 如果要让没有声明的信息不出现在子组件的根元素上,那就在子组件与data同级的位置加个属性:inheritAttrs: false;这样就不会未通过props接收的变量就不会出现在子组件的根元素上了
- 至于怎么传递给子组件的子组件的子组件的子组件....等,那就需要给子组件的子组件依次都绑定:v-bind="$attrs"即可。
- 注意这样只适用于传递数据。
- $listeners
- 官方解释:包含了父作用域中的 (不含
.native
修饰器的)v-on
事件监听器。它可以通过v-on="$listeners"
传入内部组件——在创建更高层次的组件时非常有用 - 当父组件向子组件传递回调时,子组件可以通过$listeners代理所有回调。
示例:这是父组件
- 官方解释:包含了父作用域中的 (不含
这是子组件
这是执行展示:
同时可以发现子组件加上inheritAttrs:false之后根组件里的未声明props接受的变量消失了
- 最后:建议最好不要用这个玩意,虽然他们都可以相对便捷的将第一级组件的属性,方法回调传递给N级子组件中的任一级,但是之后进行bug定位,或者分析需求将会是一个比较大的挑战。
不同窗口(同浏览器不同页签内)
同浏览器的不同页签之间的通讯,大多数的场景是:项目里的增删改查都是打开的新页面,然后新增结束后就触发列表页重新获取列表。这种场景下有什么方法呢?
监听stroage事件" >props: 두 개의 인접한 구성 요소(부모->자식) 간의 값 전송에 적용 가능합니다. $emit: child-> parent
심각한 props/$emit은 너무 흔하고, 모두 남용되기 때문에 샘플 코드를 작성할 필요가 없습니다.
- 인접한 수준의 상위 구성 요소와 하위 구성 요소 간의 값 전송에만 적용 가능
- props를 사용하여 다중 수준 구성 요소의 값을 전송할 수도 있지만 이렇게 하면 코드를 유지 관리하기가 어려워지기 때문에 매우 권장되지 않습니다. .
- eventBus: 상태는 vuex와 유사하며 모든 구성 요소에 적합하며 매우 관대합니다.
문제:
- 유지 관리가 불편한 경우. 프로젝트에서 너무 많이 사용하면 메소드 이름 충돌로 인해 예외가 발생할 수 있으며 문제 해결이 더 불편합니다. 예:
rrreeerrreeerrreeerrreee
$attrs / $listeners🎜🎜🎜$attrs🎜🎜🎜공식 설명🎜: 🎜🎜 속성이 상위 구성 요소에서 사용자 정의 하위 구성 요소로 전달됩니다. 수신된
prop
가 없으면 자동으로 하위 구성 요소 내부의 가장 바깥쪽 태그로 설정됩니다.class
및style
인 경우 가장 바깥쪽 태그는class
및style
입니다. 🎜🎜하위 구성 요소가 상위 구성 요소에서 전달한prop
가 아닌 속성을 상속하지 않으려는 경우inheritAttrs
를 사용하여 상속을 비활성화한 다음를 전달할 수 있습니다. >v-bind="$attrs"
외부에서 전달된 비prop
속성을 원하는 태그로 설정하지만class
및style
🎜🎜 🎜🎜부모 컴포넌트가 자식 컴포넌트에 값을 전달하지만 자식 컴포넌트가 전달된 값을 모두 props에 선언하지 않은 경우, 자식 컴포넌트에서 <를 사용할 수 있습니다. 모든 상위 구성요소를 얻기 위해 프록시에 대한 code>$attrs 전달된 값입니다. 🎜🎜예: 이것은 상위 구성 요소입니다.🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜이것은 하위 구성 요소입니다. 선언된 소품이 없습니다.🎜🎜🎜🎜🎜🎜🎜이것은 dom 디스플레이입니다:🎜🎜 🎜🎜 🎜- 此时,通过dom可以发现,所有没有声明的信息,全部出现在了子组件的根元素上。
- 如果要让没有声明的信息不出现在子组件的根元素上,那就在子组件与data同级的位置加个属性:inheritAttrs: false;这样就不会未通过props接收的变量就不会出现在子组件的根元素上了
- 至于怎么传递给子组件的子组件的子组件的子组件....等,那就需要给子组件的子组件依次都绑定:v-bind="$attrs"即可。
- 注意这样只适用于传递数据。
- $listeners
- 官方解释:包含了父作用域中的 (不含
.native
修饰器的)v-on
事件监听器。它可以通过v-on="$listeners"
传入内部组件——在创建更高层次的组件时非常有用 - 当父组件向子组件传递回调时,子组件可以通过$listeners代理所有回调。
示例:这是父组件
- 官方解释:包含了父作用域中的 (不含
这是子组件
这是执行展示:
同时可以发现子组件加上inheritAttrs:false之后根组件里的未声明props接受的变量消失了
- 最后:建议最好不要用这个玩意,虽然他们都可以相对便捷的将第一级组件的属性,方法回调传递给N级子组件中的任一级,但是之后进行bug定位,或者分析需求将会是一个比较大的挑战。
不同窗口(同浏览器不同页签内)
同浏览器的不同页签之间的通讯,大多数的场景是:项目里的增删改查都是打开的新页面,然后新增结束后就触发列表页重新获取列表。这种场景下有什么方法呢?
监听stroage事件
vue에서 다양한 상황에서 의사소통하는 방법은 무엇입니까? 공유하는 방법
Vue에서 다양한 상황에서 어떻게 의사소통을 할 수 있나요? 다음 글에서는 다양한 상황에서 vue의 의사소통 방법을 분석해 보겠습니다. 모두에게 도움이 되기를 바랍니다!
사실 모두가 Vue의 컴포넌트 통신에 익숙합니다. 입만 열어도 결국 면접에서 자주 묻는 질문이다. 이전에는 잘 고려하지 않았기 때문에 작은 프로젝트를 작성하다가 컴포넌트에서 커뮤니케이션의 필요성을 느꼈고, 쓰기 시작했는데 오랜 시간 확인해보니 쓸모가 없었습니다. 그 방법은 이 상황에는 적합하지 않다는 것이었습니다. 그래서 이 사건 이후에 저는 의사소통 방법을 좀 더 명확하고 세심하게 분류하기 위해 글을 쓰기로 결심했습니다. 결국 모든 의사소통 방법이 모든 시나리오에 적합한 것은 아닙니다. (학습 영상 공유: vuejs 튜토리얼)
같은 창에서 (즉, 같은 브라우저의 같은 탭에서)
같은 브라우저의 같은 탭에 관련된 가장 중요한 것은 가치 전달입니다 부모-자식 구성 요소.
vuex: 상태 관리자: 프로젝트의 모든 구성 요소에 적용 가능하며 매우 포괄적입니다.
모든 사람은 상태 관리자의 개념에 익숙해야 합니다.
- 여러 구성 요소가 하나 이상의 상태 값을 공유할 수 있습니다. 구성 요소 계층 구조가 아무리 깊어도 정상적으로 액세스할 수 있습니다. 따라서 이는 공식적으로 직접 지원되는 통신 방식입니다.
- 참고: 작은 단일 페이지 애플리케이션의 경우 이 옵션은 그다지 권장되지 않습니다. 사람이 너무 헐렁해 보여서 들 수가 없어요.
provide / inject (v2.2.1 이상 기준으로 작성): N 레벨 컴포넌트에 적용 가능하지만 단일 라인 상속 유형이어야 합니다.
이 옵션 쌍을 함께 사용하면 모든 하위 항목에 대한 상위 구성 요소는 구성 요소 계층 구조의 깊이에 관계없이 종속성을 주입하며 업스트림 및 다운스트림 관계가 설정되는 한 항상 적용됩니다.
- N개 층의 건물과 동일합니다. 최상위 레벨은 각 층 사이에 공통 파이프가 있습니다. 튜브에는 각 층에 inject
- 라는 콘센트가 있습니다. 참고:
provide
및inject
바인딩은 반응하지 않습니다. 그러나 청취 가능한 객체를 전달하면 객체의 속성은 여전히 반응합니다.provide
和inject
绑定并不是可响应的。不过如果你传入了一个可监听的对象,那么其对象的 property 还是可响应的。 - 让咱们来看看代码
// parent.vue // 此处忽略template模板的东西 <script> export default { name: 'parent', // provide有两种写法 // 第一种 provide: { a: 1, b: 2 } // 第二种 provide() { return { a: 1, b: 2 } } } </script>
// child.vue // 此处忽略template模板的东西 <script> export default { name: 'child', // inject // 第一种 inject: [ 'a', 'b' ] // 第二种 inject: { abc: { // 可以指定任意不与data,props冲突的变量名,然后指定是指向provide中的哪个变量 from: 'a', default: 'sfd' // 如果默认值不是基本数据类型,那就得改用:default: () => {a:1,b:2} }, b: { default: '33' } } } </script>
props:适用相邻两组件的传值(父->子);$emit: 子 -> 父
正经的props/$emit可太常见了,都是用烂了的,就不用写示例代码了吧。
- 只适用于相邻级别的父子组件之间传值
- 对于多级组件的传值虽然也能用props传,但是吧,这样的话会让代码很难维护,极其不推荐。
eventBus: 地位与vuex差不多,适用任意组件,包容性极强
问题:
- 不方便维护:如果在项目里用的多了,可能出现方法名冲突导致异常的问题,而且比较不方便排查。
- 示例:
// utils/eventBus.js import Vue from 'vue' const EventBus = new Vue() export default EventBus
// main.js // 进行全局挂载 import eventBus from '@/utils/eventBus' Vue.prototype.$eventBos = eventBus
// views/parent.vue <template> <div> <button @click="test">测试</button> </div> </template> <script> export default { data() { return {} }, methods: { test() { this.$eventBus.$emit('testBus', 'test') } } }
// views/child.vue <template> <div> {{ testContent }} <!-- test --> </div> </template> <script> export default { data() { return { testContent: '' } }, mounted() { this.$eventBus.$on('test', e => this.testContent = e) } }
$attrs / $listeners
- $attrs
- 官方解释:
- 从父组件传给自定义子组件的属性,如果没有
prop
接收会自动设置到子组件内部的最外层标签上,如果是class
和style
的话,会合并最外层标签的class
和style
。 - 如果子组件中不想继承父组件传入的非
prop
属性,可以使用inheritAttrs
禁用继承,然后通过v-bind="$attrs"
把外部传入的 非prop
属性设置给希望的标签上,但是这不会改变class
和style
- 从父组件传给自定义子组件的属性,如果没有
- 当父组件向子组件传值,但是子组件并没有全部将传过来的值在props中声明时,在子组件里就可以通过
$attrs
코드를 살펴보겠습니다
rrreee// 需要监听的页面 mounted() { window.addEventListener('storage', this.storageEvent); }, beforeDestroy() { window.removeEventListener() } methods: { storageEvent(e) { console.log("storage值发生变化后触发:", e) } }
로그인 후 복사로그인 후 복사 - 官方解释:
심각한 props/$emit은 너무 흔하고, 모두 남용되기 때문에 샘플 코드를 작성할 필요가 없습니다.
- 인접한 수준의 상위 구성 요소와 하위 구성 요소 간의 값 전송에만 적용 가능
- props를 사용하여 다중 수준 구성 요소의 값을 전송할 수도 있지만 이렇게 하면 코드를 유지 관리하기가 어려워지기 때문에 매우 권장되지 않습니다. .
- eventBus: 상태는 vuex와 유사하며 모든 구성 요소에 적합하며 매우 관대합니다.
문제:
- 유지 관리가 불편한 경우. 프로젝트에서 너무 많이 사용하면 메소드 이름 충돌로 인해 예외가 발생할 수 있으며 문제 해결이 더 불편합니다. 예:
rrreeerrreeerrreeerrreee
$attrs / $listeners🎜🎜🎜$attrs🎜🎜🎜공식 설명🎜: 🎜🎜 속성이 상위 구성 요소에서 사용자 정의 하위 구성 요소로 전달됩니다. 수신된
prop
가 없으면 자동으로 하위 구성 요소 내부의 가장 바깥쪽 태그로 설정됩니다.class
및style
인 경우 가장 바깥쪽 태그는class
및style
입니다. 🎜🎜하위 구성 요소가 상위 구성 요소에서 전달한prop
가 아닌 속성을 상속하지 않으려는 경우inheritAttrs
를 사용하여 상속을 비활성화한 다음를 전달할 수 있습니다. >v-bind="$attrs"
외부에서 전달된 비prop
속성을 원하는 태그로 설정하지만class
및style
🎜🎜 🎜🎜부모 컴포넌트가 자식 컴포넌트에 값을 전달하지만 자식 컴포넌트가 전달된 값을 모두 props에 선언하지 않은 경우, 자식 컴포넌트에서 <를 사용할 수 있습니다. 모든 상위 구성요소를 얻기 위해 프록시에 대한 code>$attrs 전달된 값입니다. 🎜🎜예: 이것은 상위 구성 요소입니다.🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜이것은 하위 구성 요소입니다. 선언된 소품이 없습니다.🎜🎜🎜🎜🎜🎜🎜이것은 dom 디스플레이입니다:🎜🎜 🎜🎜 🎜- 此时,通过dom可以发现,所有没有声明的信息,全部出现在了子组件的根元素上。
- 如果要让没有声明的信息不出现在子组件的根元素上,那就在子组件与data同级的位置加个属性:inheritAttrs: false;这样就不会未通过props接收的变量就不会出现在子组件的根元素上了
- 至于怎么传递给子组件的子组件的子组件的子组件....等,那就需要给子组件的子组件依次都绑定:v-bind="$attrs"即可。
- 注意这样只适用于传递数据。
- $listeners
- 官方解释:包含了父作用域中的 (不含
.native
修饰器的)v-on
事件监听器。它可以通过v-on="$listeners"
传入内部组件——在创建更高层次的组件时非常有用 - 当父组件向子组件传递回调时,子组件可以通过$listeners代理所有回调。
示例:这是父组件
- 官方解释:包含了父作用域中的 (不含
这是子组件
这是执行展示:
同时可以发现子组件加上inheritAttrs:false之后根组件里的未声明props接受的变量消失了
- 最后:建议最好不要用这个玩意,虽然他们都可以相对便捷的将第一级组件的属性,方法回调传递给N级子组件中的任一级,但是之后进行bug定位,或者分析需求将会是一个比较大的挑战。
不同窗口(同浏览器不同页签内)
同浏览器的不同页签之间的通讯,大多数的场景是:项目里的增删改查都是打开的新页面,然后新增结束后就触发列表页重新获取列表。这种场景下有什么方法呢?
监听stroage事件
// 需要监听的页面 mounted() { window.addEventListener('storage', this.storageEvent); }, beforeDestroy() { window.removeEventListener() } methods: { storageEvent(e) { console.log("storage值发生变化后触发:", e) } }
- 切记:第一条:要记得将监听的事件在组件销毁之前解除监听。否则会给你惊”喜“
- 切记:第二条:其中监听方法回调一定要在methods中定义,然后通过this进行引用,否则你在解除事件监听的时候将无效。
不同浏览器
不同浏览器的同一网站的有通讯的必要吗?
如果有那就:websocket(比如聊天室)
哈哈哈哈
위 내용은 vue에서 다양한 상황에서 의사소통하는 방법은 무엇입니까? 공유하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











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

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

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

vue.js에서 게으른 로딩을 사용하면 필요에 따라 부품 또는 리소스를 동적으로로드 할 수 있으므로 초기 페이지로드 시간을 줄이고 성능을 향상시킵니다. 특정 구현 방법에는 & lt; keep-alive & gt를 사용하는 것이 포함됩니다. & lt; 구성 요소는 & gt; 구성 요소. 게으른 하중은 FOUC (Splash Screen) 문제를 일으킬 수 있으며 불필요한 성능 오버 헤드를 피하기 위해 게으른 하중이 필요한 구성 요소에만 사용해야합니다.

CSS 애니메이션 또는 타사 라이브러리를 사용하여 VUE에서 Marquee/Text Scrolling Effects를 구현하십시오. 이 기사는 CSS 애니메이션 사용 방법을 소개합니다. & lt; div & gt; CSS 애니메이션을 정의하고 오버플로를 설정하십시오 : 숨겨진, 너비 및 애니메이션. 키 프레임을 정의하고 변환을 설정하십시오 : Translatex () 애니메이션의 시작과 끝에서. 지속 시간, 스크롤 속도 및 방향과 같은 애니메이션 속성을 조정하십시오.

Vue DevTools를 사용하여 브라우저 콘솔에서 vue 탭을 보면 VUE 버전을 쿼리 할 수 있습니다. npm을 사용하여 "npm list -g vue"명령을 실행하십시오. package.json 파일의 "종속성"객체에서 vue 항목을 찾으십시오. Vue Cli 프로젝트의 경우 "vue -version"명령을 실행하십시오. & lt; script & gt에서 버전 정보를 확인하십시오. vue 파일을 나타내는 html 파일의 태그.

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

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