2.4.2
https://jsbin.com/qejofexedo/edit?html , js, output
์ฌ์์ฐ ๋งํฌ๋ฅผ ์ฐธ์กฐํ์ญ์์ค.
Expand is True
ํด๋ฆญํ๋ฉด expand
๋ฅผ ํด๋ฆญํ๋ฉด false
๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ countA
๋ณ๊ฒฝ๋์์ต๋๋ค.
Expand is Ture
ํด๋ฆญํด๋ ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์์์ต๋๋ค.
countA
๋ฐ countB
๋ณ๊ฒฝ๋์์ต๋๋ค.
ํด๋ฆญํ๋ฉด expand
์ด false
๋ก ๋ณ๊ฒฝ๋์์ง๋ง ์ฆ์ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ํธ๋ฆฌ๊ฑฐ๋์์ต๋๋ค. ๋ค๋ฅธ vnode ํด๋ฆญ ์ด๋ฒคํธ๋ฅผ ์คํํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ์ฅ์ด true
๋ณ๊ฒฝ๋์์ต๋๋ค.
p
, section
์ ๊ฐ์ ๋ค๋ฅธ ํ๊ทธ ์ด๋ฆ์ผ๋ก ๋ฐ๊พธ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.i
ํ๊ทธ์์ ์ฒซ ๋ฒ์งธ div์ ์์ div
ํ๊ทธ๋ก ์ด๋ํด๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
์ ์์ธ ๊ฒ ๊ฐ๋ค
์ฌํ์ด ์๋ ํ๋๋ก ์๋ํฉ๋๋ค ...
@Kingwl @ yyx990803 ์ฃ์กํฉ๋๋ค. ๋ค๋ฅธ ์ฌ๋ก๋ฅผ ํ ์คํธํ๊ณ ๋ค์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์์์ต๋๋ค.
์ค์ํ ์ฝ๋๋
<div class="header" v-if="expand"> // block 1
<i @click="expand = false, countA++">Expand is True</i> // element 1
</div>
<div class="expand" v-if="!expand" @click="expand = true, countB++"> // block 2
<i>Expand is False</i> // element 2
</div>
๋ค ๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
block 1
๋ฐ block2
์์ ์์ ํ๊ณ ์ ์๋ํฉ๋๋ค.element 1
๋ฐ element 2
์์ ์์ ํ๊ณ ์ ์๋ํฉ๋๋ค.block 1
๋ฐ element 2
, expand
๋ฅผ true๋ก ๋ณ๊ฒฝํด๋ ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋๋ฆด ์๋ ์์ต๋๋ค.element 1
๋ฐ block 2
์์ ์์ ํฉ๋๋ค. expand
๋ฅผ false๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ expand
๋ฅผ true๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.๋ฐ๋ผ์ ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๋ฐ์ํฉ๋๋ค.
<i>
์ ๋ด๋ถ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ฌ nextTick (๋ง์ดํฌ๋ก ํ์คํฌ)์ ๋ํ ์ฒซ ๋ฒ์งธ ์
๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.์ด๊ฒ์ ์์ ์ด ๋งค์ฐ ๊น๋ค ๋กญ๊ณ ์ ๋ฐ์ดํธ ํ์์ ์ํด ๋ง์ดํฌ๋ก ํ์คํฌ๋ฅผ ํ์ฉํ๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋์ด ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค (์ : Preact). React๋ ํฉ์ฑ ์ด๋ฒคํธ ์์คํ ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค (์๋ง๋ ์ด์ ๊ฐ์ ์ฃ์ง ์ผ์ด์ค๋ก ์ธํด).
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ ๊ฐ์ ์ธ๋ถ div์ ์๋ก ๋ค๋ฅธ ํค๋ฅผ ์ ๊ณตํ์ฌ ์ ๋ฐ์ดํธ ์ค์ ๊ฐ์ ๋ก ๊ต์ฒด๋๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒํ๋ฉด ๋ฒ๋ธ ๋ง ๋ ์ด๋ฒคํธ๊ฐ ์ ํ๋์ง ์์ต๋๋ค.
<div class="header" v-if="expand" key="1"> // block 1
<i @click="expand = false, countA++">Expand is True</i> // element 1
</div>
<div class="expand" v-if="!expand" @click="expand = true, countB++" key="2"> // block 2
<i>Expand is False</i> // element 2
</div>
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฐ๋ผ์ ์ด๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ๋ฐ์ํฉ๋๋ค.
<i>
์ ๋ด๋ถ ํด๋ฆญ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ฌ nextTick (๋ง์ดํฌ๋ก ํ์คํฌ)์ ๋ํ ์ฒซ ๋ฒ์งธ ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.์ด๊ฒ์ ์์ ์ด ๋งค์ฐ ๊น๋ค ๋กญ๊ณ ์ ๋ฐ์ดํธ ํ์์ ์ํด ๋ง์ดํฌ๋ก ํ์คํฌ๋ฅผ ํ์ฉํ๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋์ด ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค (์ : Preact). React๋ ํฉ์ฑ ์ด๋ฒคํธ ์์คํ ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค (์๋ง๋ ์ด์ ๊ฐ์ ์ฃ์ง ์ผ์ด์ค๋ก ์ธํด).
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ ๊ฐ์ ์ธ๋ถ div์ ์๋ก ๋ค๋ฅธ ํค๋ฅผ ์ ๊ณตํ์ฌ ์ ๋ฐ์ดํธ ์ค์ ๊ฐ์ ๋ก ๊ต์ฒด๋๋๋ก ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒํ๋ฉด ๋ฒ๋ธ ๋ง ๋ ์ด๋ฒคํธ๊ฐ ์ ํ๋์ง ์์ต๋๋ค.