๐Ÿ“• Language/Vue

[Vuejs] ํ˜ธ์ถœํ•œ ์ปดํฌ๋„ŒํŠธ์˜ function ์‚ฌ์šฉํ•˜๊ธฐ ($refs X)

a n u e 2022. 7. 15. 15:43

 

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์„ ์‚ฌ์šฉํ•˜์ž.