A ๋ฉ๋ด ํ๋ฉด์์ ๋ฐ์ดํฐ ๋ฑ๋ก ์, ํด๋น ๋ฐ์ดํฐ๋ฅผ JSON ํํ๋ก ๋ก์ปฌ์คํ ๋ฆฌ์ง์ ๋ด์ B ๋ฉ๋ด ํ๋ฉด์ ๋ฟ๋ ค์ฃผ๋ ์์ ์ ํ๋ค.
๊ทธ๋ฐ๋ฐ ๊ฐํ์ ์ผ๋ก ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ค.
์คํ ๋ฆฌ์ง์๋ ์ ๋๋ก ๋ด๊ธฐ๋๋ฐ, ์ฐธ ์ด์ํ๋ค.
2๊ฐ์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋์๋๊ณ ํ ์คํธ๋ฅผ ๋ฐ๋ณตํ๋๋ฐ,
B ๋ฉ๋ด๋ฅผ ๋์๋์ ๋ธ๋ผ์ฐ์ ์์ A๋ C๋ฑ ํ ๋ฉ๋ด๋ก ์ด๋์ ํ ๋ค ๋ค์ B๋ก ๋์์ค๋ฉด ํด๋น ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๋ฏ ๋ณด์๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ฑ๋กํ๋ A์์ storage๋ฅผ setํด์ฃผ๊ณ , B์์ mountํ ๋, storage๋ฅผ getํด์ฃผ์๋๋ฐ
get๋ฅผ ํ๋ฉด์ B๋ฉ๋ด์ ๊ทธ๋ฆฌ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค ๋ setInterval()์ ์ฌ์ฉํ์ฌ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋๋ก ํ๋ค.
vue๊ฐ SPA์ด์ด์ ๊ทธ๋ฐ์ง, ํ ํ์ด์ง๋ก ์ด๋ํ ๋์๋ ์ด์ Interval์ด ์๋ฉธ๋์ง ์๊ณ ๋จ์์๋ ๋ฏ ํ๋ค. ๊ทธ๋์ ์ง์ ํด๋์ ์๊ฐ๋๋ก ์์ง์ด์ง ์๊ณ , ๊ฐํ์ ์ผ๋ก ์์ง์ด๊ณ ๊ทธ๋๋ง ๋ฐ์ดํฐ๊ฐ ๋ฐ์์ค๋ ๊ฒ ์ฒ๋ผ ๋ณด์ฌ์ก๋ค.
์ฐพ์๋ณด๋ clearInterval์ด๋ผ๋๊ฒ ์์ด์, unmountํ ๋, ํด๋น Interval์ ์ค์ง์์ผ์ฃผ์๋ค.
<์ด์ ์ฝ๋>
onMounted(() => {
setInterval(function() {
if(localStorage.getItem('flag') === 'Y') {
const target = localStorage.getItem('target');
state.table.data.unshift(JSON.parse(target));
localStorage.setItem('flag', 'N');
}
}, 500);
});
<๋ณ๊ฒฝ์ฝ๋>
const getTargetData = () => {
if(localStorage.getItem('flag') === 'Y') {
const target = localStorage.getItem('target');
state.table.data.unshift(JSON.parse(target));
localStorage.setItem('flag', 'N');
}
};
.
.
.
mounted() {
this.loading = setInterval(this.getTargetData, 500);
},
unmounted() {
clearInterval(this.loading);
}