uniapp이 this.$refs를 지원하지 않으면 어떻게 해야 하나요?

PHPz
풀어 주다: 2023-04-20 09:37:30
원래의
3014명이 탐색했습니다.

개발자로서 uniapp 프레임워크를 사용하여 개발하는 경우 몇 가지 문제에 직면할 수 있습니다. 그 중 하나는 uniapp이 this.$refs 구문 사용을 지원하지 않는다는 것입니다. 이 기사에서는 이 문제와 해결 방법을 살펴보겠습니다.

먼저 this.$refs가 무엇인지, 무엇을 하는지 이해해야 합니다. Vue.js 프레임워크에서 this.$refs는 하위 구성요소 또는 DOM 요소에 대한 참조를 얻는 데 사용됩니다. this.$refs를 사용하면 구성 요소와 DOM 요소에 쉽게 액세스하고 수정할 수 있습니다. 그러나 uniapp 프레임워크는 작은 프로그램 확장을 기반으로 한 개발 모델을 채택하므로 uniapp에서는 this.$refs를 지원하지 않습니다.

그렇다면 uniapp에서 하위 컴포넌트나 DOM 요소의 참조를 어떻게 얻을 수 있을까요? 정답은 유니앱에서 제공하는 API를 이용하여 동작시키는 것입니다. uniapp은 univerify 인증 확인, uni.request 네트워크 요청, uni.showToast 프롬프트 상자 등과 같은 많은 API를 제공합니다. 하위 구성 요소 또는 DOM 요소에 대한 참조를 얻으려면 uni-app에서 제공하는 API인 uni.createSelectorQuery()를 사용할 수 있습니다.

uni.createSelectorQuery()는 페이지에서 노드를 선택하는 메서드를 제공하고 쿼리 개체를 반환합니다. 이 쿼리 개체의 경우 select, selectAll,boundingClientRect 등과 같이 제공되는 메서드를 사용하여 필요한 노드 정보를 얻을 수 있습니다. 예를 살펴보겠습니다.

<template>
  <view>
    <button @click="handleClick">获取节点信息</button>
    <view ref="myView">{{ message }}</view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello uniapp!',
      myViewRect: null
    }
  },
  methods: {
    handleClick() {
      uni.createSelectorQuery().select('.myView').boundingClientRect(rect => {
        this.myViewRect = rect
        console.log(this.myViewRect)
      }).exec()
    }
  }
}
</script>
로그인 후 복사

이 예에서는 view 태그를 사용하고 ref 속성을 view 태그에 설정하고 myView라는 속성을 설정합니다. 이 예에서는 this.myViewRect 속성을 통해 myView 노드의 정보를 얻습니다. 버튼을 클릭하면 uni.createSelectorQuery()를 사용하고 .select() 메서드를 사용하여 필요한 노드를 선택한 다음 .boundingClientRect() 메서드를 사용하여 이 노드의 정보를 얻은 다음 마지막으로 . exec() 메서드를 사용하여 이 작업을 실행합니다. 콜백 함수에서는 myView 노드의 정보를 가져와서 이를 myViewRect 속성에 할당한 다음 이 속성을 콘솔에 인쇄했습니다.

간단히 말하면 uniapp 프레임워크는 this.$refs 구문 사용을 지원하지 않지만 여전히 다른 방법을 사용하여 하위 구성 요소 또는 DOM 요소에 대한 참조를 얻을 수 있습니다. 나는 uni.createSelectorQuery() API를 마스터한 후에는 비즈니스 요구 사항을 달성하는 데 필요한 노드 정보를 쉽게 얻을 수 있다고 믿습니다.

위 내용은 uniapp이 this.$refs를 지원하지 않으면 어떻게 해야 하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿