πŸ“• Language/Vue

[Age of Vue] Vue.js μ‹œμž‘ν•˜κΈ° - 15.props μ‹€μŠ΅

a n u e 2022. 5. 2. 22:50
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <!--
            <app-header v-bind:ν”„λ‘­μŠ€ 속성 이름="μƒμœ„ μ»΄ν¬λ„ŒνŠΈμ˜ 데이터 이름"></app-header>
        -->
        <app-header v-bind:propsdata="message"></app-header>
        <!-- μ»΄ν¬λ„ŒνŠΈμ˜ propsλͺ… 바인딩해주고, μƒμœ„ μ»΄ν¬λ„ŒνŠΈμ˜ 속성 값을 적어쀀닀 -->
        <app-content v-bind:propsdata="num"></app-content>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        var appHeader = {
            template : '<h1>{{ propsdata }}</h1>' ,
            //μ•„λž˜μ—μ„œ 받을 props 이름 μ§€μ •
            props : ['propsdata']
        }
        var appContent = {
            template : '<div>{{ propsdata }}</div>' ,
            //μ•„λž˜μ—μ„œ 받을 props 이름 μ§€μ •
            //λ‹€λ₯Έ λͺ…칭을 μ‚¬μš©ν•˜μ—¬λ„ 되고, 각 λ²”μœ„μ—μ„œ μœ λ‹ˆν¬ν•˜κ²Œ 적용되기 λ•Œλ¬Έμ—
            //λ‹€λ₯Έ μ»΄ν¬λ„ŒνŠΈμ™€ propsλͺ…이 동일해도 관계없닀.
            props : ['propsdata']
        }
        new Vue({
                el : '#app' ,
                components : {
                    'app-header' : appHeader,
                    'app-content' : appContent
                },
                data : {
                    message : 'hi',
                    num:10
                }
            })
    </script>
</body>
</html>

 

app-content μ»΄ν¬λ„ŒνŠΈμ— Root μ»΄ν¬λ„ŒνŠΈμ˜ num값이 λ°”μΈλ”©λ˜μ–΄ λ‚΄λ €μ˜΄

 

Root μ»΄ν¬λ„ŒνŠΈμ—μ„œ μ§€μ •ν•œ 속성 값이 λ°”λ€Œλ©΄ (ex: num, message)

μžλ™μœΌλ‘œ μžμ‹ μ»΄ν¬λ„ŒνŠΈμ˜ 값도 바뀐닀.

이것이 λ°”λ‘œ Vue의 Reactivity