props์ผ๋ก ํจ์ ๋ฐ๊ธฐ
๐ฆ props ์ผ๋ก ํจ์ ๋ฐ๊ธฐ ๊ธ์ ์ฐ๊ฒ ๋ ์ด์
๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ์ฌ๋ฌ๊ฐ์ ๋ชจ๋ฌ์ ๋ง๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๊ทธ๋ ์ง๋ง ๋๋ถ๋ถ์ ๋ชจ๋ฌ์ "์,์๋์ค" ๋๋ ๊ฒฝ๊ณ ์ฑ ๋ชจ๋ฌ์ ๋ง๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๊ทธ๋ฆฌ๊ณ ํ ํ๋ฉด์ 3~4๊ฐ์ ๋ชจ๋ฌ์ด ํ์ํ ๊ฒฝ์ฐ๋ ์๋ค. ๊ทธ๋ ๋ค๋ฉด, ํ ํ๋ฉด์ 3~4๊ฐ์ ๋ชจ๋ฌ์ importํด์ผ ํ๋ ๊ฒฝ์ฐ๋ ๋ฐ์ํ๋๋ฐ, ์ด๋ฌํ ๋ถ๋ถ์ด ์์๋ญ๋น๋ผ๊ณ ์๊ฐํ๋ค. ๊ทธ๋ฆฌํ์ฌ ๋ง์ฝ ๋ชจ๋ฌ์ ๊ตฌ์กฐ๋ ๊ฐ์ผ๋, ์ ํ๋ ๋ฒํผ์ ๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋์ ๋ฐฉ์์ด ๋ค๋ฅด๋ค๋ฉด props์ผ๋ก Function์ผ๋ก ๋ฐ์ผ๋ฉด ๋์ง ์๋๊ฐ ๋ผ๋ ์๊ฐ์ด ๋ค์ด์ ์ด๋ฒ๊ธ์ ์ ๊ฒ ๋์๋ค.
์๋ ๋ชจ๋ฌ1,๋ชจ๋ฌ2๋ ๊ตฌ์กฐ๋ ๊ฐ์ผ๋
๐ฆ Props์ผ๋ก ํจ์ ๋ฐ๊ธฐ
์ผ๋จ props์ผ๋ก closefunc์ผ๋ก ๋ฐ๋๋ก ํ๋ค. ๊ทธ๋ฆฌ๊ณ type์ Function์ผ๋ก ์ ์ธํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก 'Default function'์ผ๋ก ๋ฐ๋๋ก ํ๋ค.
props: {
closefunc: {
type: Function,
default() {
return 'Default function'
}
}
}
๐ ๋ถ๋ชจ์ปดํผ๋ํธ์์ props์ผ๋ก ๋ฐ์ data ์ ์ธ
์ผ๋จ ์์์ปดํผ๋ํธ์ ์ ๋ฌํ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํด์ค๋ค.
title,contents,modalCallback์ ์ ์ธํด์ค๋ค. modalCallback์ด ์์ ์ปดํผ๋ํธ์๊ฒ ์ ๋ฌํ ํจ์์ด๋ค.
data() {
modalData: {
title: "",
contents: "",
modalCallback: () => {
console.log("default modalCallback");
},
}
}
๐ฆง ์ ํ๋ ๋ฒํผ์ ๋ฐ๋ผ modalData ๊ฐ ๋ฐ๊ฟ์ฃผ๊ธฐ
onCloseModal1,onCloseModal2๋ ๊ฐ์ ๋ชจ๋ฌ์ ๊ณต์ ํ๋ฉด์ , ๋ฒํผ ๊ธฐ๋ฅ์ด ๋ค๋ฅธ ํจ์์ด๋ค.
๊ทธ๋ฆฌ๊ณ modalClick1,modalClick2๋ ๋ชจ๋ฌ1,2์ ํด๋ฆญํ์ ๋์ ํจ์์ด๋ฉฐ, modalCallBack์ onCloseModal1,onCloseModal2๋ฅผ ์ ๋ฌ ํ ๊ฒ์ ๋ณผ ์ ์๋ค.
methods: {
onCloseModal1() {
alert("onClose1")
},
onCloseModal2() {
alert("onClose2")
},
modalClick1() {
this.modalData = {
title: "์ ๋ชฉ1",
contents: "๋ณธ๋ฌธ๋ด์ฉ",
modalCallback: this.onCloseModal1
}
//๋ชจ๋ฌ๋ณด์ฌ์ฃผ๊ธฐ data
this.modalVisible = true;
},
modalClick2() {
this.modalData = {
title: "์ ๋ชฉ2",
contents: "๋ณธ๋ฌธ๋ด์ฉ2",
modalCallback: this.onCloseModal2
}
//๋ชจ๋ฌ๋ณด์ฌ์ฃผ๊ธฐ data
this.modalVisible = true;
}
}
๐ ๋ถ๋ชจ์์ ๋ฐ์ ํจ์ ํธ์ถํด์ฃผ๊ธฐ
๋ถ๋ชจ์ปดํผ๋ํธ์์ ๋ฐ์ closefunc๋ฅผ ๋ฒํผ์ ํด๋ฆญํ์ ๋ ํธ์ถํ๋ค.
props: {
closefunc: {
type: Function,
default() {
return 'Default function'
}
}
},
methods: {
close() {
this.$emit("onclose");
this.closefunc();
}
},
๊ฐ๊ฐ closefunc์ ์ ๋ฌํ ํจ์๋ค์ด ๋จ๋ ๊ฒ์ ์ ์ ์๋ค.