Vue 3의 SSR 친화적 고유 HTML ID
5053 단어 vuejavascriptssrwebdev
HTML
id
속성을 사용하여 요소를 함께 연결해야 하는 Vue 구성 요소가 있습니다.<template>
<div>
<label for="inputId">Label</label>
<input id="inputId" type="text">
</div>
</template>
그러나 결과적으로 페이지에 해당 구성 요소의 여러 인스턴스가 있어야 합니다.
id
충돌로 페이지가 깨지는 것을 방지하려면 input
요소에 대한 고유 ID가 필요합니다.불행하게도 Vue는 이를 수행하기 위해 키 오프할 수 있는 구성 요소에 대한 인스턴스 ID를 제공하지 않습니다.
다른 개발자들이 흔히 볼 수 있는 것은 다음과 같은 것입니다.
<template>
<div>
<label :for="inputId">Label</label>
<input :id="inputId" type="text">
</div>
</template>
<script>
let id = 0
export default {
data() {
return {
inputId: null
}
},
created() {
id++
this.inputId = id
}
}
</script>
이것은 서버 측 렌더링이 그림에 들어갈 때까지 대부분 작동합니다. 별도의 스레드 처리로 인해 무엇을 하든
id
는 서버와 클라이언트에서 동기화되지 않습니다.정말 안타까운 일이지만 해결 방법이 있습니다.
바로 이 문제에 대해 vue-uid을 작성했습니다.
요소의 속성
id
에 자동으로 할당되는 고유 식별자를 생성하는 작은 지시문입니다.다음은 사용 예입니다.
<script setup lang="ts">
import { ref } from 'vue'
const input = ref<null | HTMLElement>(null)
</script>
<template>
<div>
<label :for="input?.id">Input label</label>
<input v-uid ref="input" type="text">
</div>
</template>
이것의 가장 좋은 부분은 처음에 고유 ID를 생성하는 방법을 알아내기 위해 추가 코드를 작성하거나 추가 종속성을 가져올 필요가 없다는 것입니다. 두 번째는 SSR 친화적입니다! 요소에
v-uid
명령을 내리면 믿을 수 있는 고유한 ID로 레이스를 시작합니다.vue-uid의 작동 방식에 대해 더 자세히 알고 싶으면 Custom Directives 설명서를 읽어보십시오.
도움이 되었기를 바랍니다.
감사.
Reference
이 문제에 관하여(Vue 3의 SSR 친화적 고유 HTML ID), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ajscommunications/ssr-friendly-unique-html-ids-in-vue-3-1og9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)