vue 2 의$refs 가 vue 3 조합 식 API 에서 의 대체 방법
최근 아마추어 들 은 vue 3 프로젝트'크레용(Crayon)관리 템 플 릿:Vue 3+Vuex 4+Ant Design 2'개발 을 공부 하고 있 으 며,이틀 동안 조금씩 추진 되 어 chart 도표 구성 요 소 를 실현 하 였 으 며,글 을 쓸 때 코드 를 제출 하 는 commt 에 오류 가 있 음 을 발견 하 였 다.
vue 3 에서 조합 식 API 의 setup()방법 을 사용 할 때 this.$refs 를 정상적으로 사용 할 수 없 지만 새로운 함수 ref()를 사용 할 수 있 습 니 다.
다음 코드 발췌:https://github.com/QuintionTang/crayon/blob/feat-dashboard/src/qtui/components/Chart.vue
<template>
<canvas ref="refChart" :height="setHeight"></canvas>
</template>
<script>
import { defineComponent, onMounted, ref, inject, watch } from "vue";
import Chart from "chart.js";
import { deepCopy } from "@/helper/index";
export default defineComponent({
name: "QtChart",
props: {
type: {
type: String,
required: true,
default: "line",
},
data: {
type: Object,
required: true,
default: () => ({}),
},
options: {
type: Object,
default: () => ({}),
},
height: {
type: Number,
default: 0,
},
refKey: {
type: String,
default: null,
},
},
setup(props) {
const refChart = ref();
//
const init = () => {
const canvasChart = refChart.value?.getContext("2d");
const chartHelper = new Chart(canvasChart, {
type: props.type,
data: deepCopy(props.data),
options: props.options,
});
watch(props, () => {
chartHelper.data = deepCopy(props.data);
chartHelper.options = props.options;
chartHelper.update();
});
// refChart
refChart.value.instance = chartHelper;
};
//
const setHeight = () => {
return {
height: props.height,
};
};
// , inject
const bindInstance = () => {
if (props.refKey) {
const bind = inject(`bind[${props.refKey}]`);
if (bind) {
bind(refChart.value);
}
}
};
onMounted(() => {
bindInstance();
init();
});
return {
refChart,
setHeight,
};
},
});
</script>
이 코드 는 도표 구성 요소 Chart 를 완전 하 게 실현 하 였 으 며,속성 props 를 사용자 정의 하 였 으 며,파 라 메 터 를 setup 방법 으로 속성 값 을 사용 하 였 습 니 다.html 에서 ref="refChart"를 도표 의 dom 대상 으로 정의 하고 setup 방법 에서 방법 ref 방법 으로 응답 식 가 변 대상 을 정의 하 며 setup 함수 끝 에 반환 값 으로 합 니 다.
const refChart = ref();
주의해 야 할 것 은 반환 값 의 속성 명 은 html 의 ref 값 과 일치 해 야 합 니 다.아래 코드 는 정상적으로 실행 할 수 있다.
<template>
<canvas ref="refChart" :height="setHeight"></canvas>
</template>
<script>
import { defineComponent, onMounted, ref, inject, watch } from "vue";
import Chart from "chart.js";
import { deepCopy } from "@/helper/index";
export default defineComponent({
name: "QtChart",
props: {
// ...
},
setup(props) {
const refChartBox = ref();
// ...
return {
refChart:refChartBox,
};
},
});
</script>
다음 상황 에 서 는 프로그램 오류 가 발생 하여 예상 효 과 를 얻 지 못 할 수 있 습 니 다.html 에서 정의 해 야 할 ref="refChart"는 setup 에서 돌아 오 는 refChart Box 와 일치 하지 않 습 니 다.
<template>
<canvas ref="refChart" :height="setHeight"></canvas>
</template>
<script>
import { defineComponent, onMounted, ref, inject, watch } from "vue";
import Chart from "chart.js";
import { deepCopy } from "@/helper/index";
export default defineComponent({
name: "QtChart",
props: {
// ...
},
setup(props) {
const refChartBox = ref();
// ...
return {
refChartBox,
};
},
});
</script>
결론.본 고 는 ref 방법의 사용 을 간단하게 소개 할 뿐 프로젝트 에 마침 사용 되 었 고 나중에 계속 배우 면서 프로젝트 를 추진 하고 필 기 를 할 것 이다.
vue 2 의$refs 가 vue 3 조합 식 API 에서 의 대체 방법 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.vue 3 조합 식 API 내용 에 대해 서 는 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
내 새 책,오픈 소스 관리 시스템, vue-bag-adminvue-bag-admin,use Vue3+Vite2.6+TypeScript+ant-design-vue,Provide the basic framework, quickly build enterprise-level bac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.