A๋ผ๋ ํ์ผ์์ B๋ผ๋ ๊ณตํต ์ปดํฌ๋ํธ๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉํ๊ณ ์๋ค.
B์์ ์ฌ์ฉํ๊ณ ์๋ getData ๋ผ๋ function๋ฅผ A์์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ค.
์ฐ์ ์ด๋ ค์์ด ์์๋ ์ด์ ๋, B ์ปดํฌ๋ํธ์ ref๋ช ์ด ๋จ์ ์คํธ๋ง ๊ฐ์ด ์๋ ํญ์ index์ ๋ฐ๋ผ ๋ฌ๋ฆฌ ๋งค๊ฒจ์ง๋ค.
๋ญ ์ด๋ฐ ์์ผ๋ก .. ?
<B>
:ref="(el) => {idx==0?getGridDataRef0=el:(idx==1?getGridDataRef1=el:getGridDataRef2=el)}"
</B>
์๋ฅผ ๋ค์ด, A์์ getCallFun ์ด๋ผ๋ function์์ B์ ์ getData๋ฅผ ํธ์ถํ๋ค๊ณ ํด๋ณด์
ref๋ฅผ ๋ช ๋ช ํด์ฃผ์์ผ๋ฏ๋ก, this.$refs.์ปดํฌ๋ํธ๋ช (์ฌ๊ธฐ์๋B).์ปดํฌ๋ํธ์๋ฉ์๋(์ฌ๊ธฐ์๋getData) ์ด๋ฐ ์์ผ๋ก ํธ์ถ์ ํ๋ฉด ๋๋ค. this.$refs.B.getData(param);
๊ทผ๋ฐ ์๊พธ $refs๋ฅผ ๋ชป ์ฐพ๋๋ค. ์ค๋ ์ด ์๋ฌ๋ฅผ ์ ๋ง ๋ช ์ญ ๋ฒ ์ ๋ ๋ณธ ๊ฒ ๊ฐ๋ค ^^
typeerror: cannot read properties of undefined (reading '$refs')
vue3์์๋ setup์ ์ฌ์ฉํ๋ฏ๋ก, $refs๋ก ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
setup์ ref๋ฅผ ๋จผ์ ์ ์ธํด์ฃผ๊ณ , ๊ทธ ๋ณ์ ๊ฐ์ ์ด์ฉํ์ฌ B์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ๋ ํจ์ ๋ฑ์ ๋๊ณ ์์ผํ๋ค.
ํจ์์ ๊ฒฝ์ฐ์๋ ์ปดํฌ๋ํธ๋ช .value.ํจ์๋ช (); ์ด๊ณ , ์ผ๋ฐ state ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ์๋ ์ปดํฌ๋ํธ๋ช .value.๋ณ์๋ช ; ์ด๋ค.
์๋ฅผ ๋ค๋ฉด ์ด๋ฐ ์์ด๋ค.
export default {
name: 'A',
components: { B, autoSearchText },
setup() {
const getGridDataRef0 = ref(null);
const getGridDataRef1 = ref(null);
const getGridDataRef2 = ref(null);
}
.
.
.
const searchAutoCompleteData = async () => {
let refNm = eval('getGridDataRef'+state.tabIdx);
state.searchData = refNm.value.getData(autoSearchText.value.input);
state.searchTitle = refNm.value.title;
}
๐ฉ ์ฃผ์
- ์ B์์ ์ฌ์ฉํ๋ getData๋ ๊ผญ B์์ return๊ฐ์ผ๋ก ์ ์๋์ด์ผ ์ฐพ์ ์ ์๋ค.
- refs ์์ฑ์ ์ปดํฌ๋ํธ๊ฐ ๋๋๋ง ์๋ฃ๋ ํ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ create hook ์์๋ undefined๊ฐ ๋๋ฉฐ, onBeforeMount, ํน์ onMounted ์ฃผ๊ธฐ์ ๋ค์ด์์ผ ๊ฐ์ด ์ ์์ ์ผ๋ก ๋ค์ด์จ๋ค.
๐ ์ฐธ๊ณ
B ์ปดํฌ๋ํธ๋ฅผ ์ฝ์์ ์ฐ์ด๋ณด๋ฉด ์๋์ ๊ฐ์ด ๋์จ๋ค.
๐ ์์ ์ปดํฌ๋ํธ์์ ํ์ ์ปดํฌ๋ํธ function ํธ์ถ ์, ref๋ณด๋ค๋ emit์ ๊ถ๊ณ ํ๋ฏ๋ก ํน์ดํ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด emit์ ์ฌ์ฉํ์.