λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
⭐ Personal_Study/Vue

Vue: advanced attributes

by ν¬μŠ€νŠΈμ‰μ΄ν¬ 2022. 11. 7.

Vue Advanced

Computed

βœ” Vue instance κ°€ 가진 option 쀑 ν•˜λ‚˜
βœ” computed 객체에 μ •μ˜λœ ν•¨μˆ˜λ₯Ό νŽ˜μ΄μ§€κ°€ 졜초둜 λ Œλ”λ§ 될 λ•Œ ν˜ΈμΆœν•˜μ—¬ 계산

  • 계산 κ²°κ³Όκ°€ λ³€ν•˜κΈ° μ „κΉŒμ§€ ν•¨μˆ˜λ₯Ό 재호좜 ν•˜λŠ” 것이 μ•„λ‹Œ κ³„μ‚°λœ 값을 λ°˜ν™˜

method vs computed

<body>
  <div id="app">
    <h1>data_01 : {{ number1 }}</h1>
    <h1>data_02 : {{ number2 }}</h1>
    <hr />
    <!-- method -->
    <h1>add_method : {{ add_method() }}</h1>
    <h1>add_method : {{ add_method() }}</h1>
    <h1>add_method : {{ add_method() }}</h1>
    <hr />
    <!-- computed -->
    <h1>add_computed : {{ add_computed }}</h1>
    <h1>add_computed : {{ add_computed }}</h1>
    <h1>add_computed : {{ add_computed }}</h1>
    <hr />
    <button v-on:click="dataChange">Change Data</button>
  </div>

  <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
  <script>
    const app = new Vue({
      el: "#app",
      data: {
        number1: 100,
        number2: 100,
      },
      computed: {
        add_computed: function () {
          console.log("computed 싀행됨!");
          return this.number1 + this.number2;
        },
      },
      methods: {
        add_method: function () {
          console.log("method 싀행됨!");
          return this.number1 + this.number2;
        },
        dataChange: function () {
          this.number1 = 200;
          this.number2 = 300;
        },
      },
    });
  </script>
</body>
image

βœ” method

  • 호좜 될 λ•Œλ§ˆλ‹€ ν•¨μˆ˜λ₯Ό μ‹€ν–‰
  • 같은 결과여도 맀번 μƒˆλ‘­κ²Œ 계산

βœ” computed

  • ν•¨μˆ˜μ˜ 쒅속 λŒ€μƒμ˜ 변화에 따라 계산 μ—¬λΆ€κ°€ 결정됨
  • 쒅속 λŒ€μƒμ΄ λ³€ν•˜μ§€ μ•ŠμœΌλ©΄ 항상 μ €μž₯(캐싱) 된 값을 λ°˜ν™˜

watch

<button @click="number++">+</button>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      number: 0,
    },
    watch: {
      number: function (val, oldVal) {
        console.log(val, oldVal);
      },
    },
  });
</script>

βœ” νŠΉμ • λ°μ΄ν„°μ˜ λ³€ν™” 감지

  1. watch 객체 μ •μ˜
  2. κ°μ‹œν•  λŒ€μƒ data 지정
  3. dataκ°€ λ³€ν•  μ‹œ μ‹€ν–‰ ν•¨μˆ˜ μ •μ˜

βœ” 첫 번째 μΈμžλŠ” 변동 μ „ data
βœ” 두 번째 μΈμžλŠ” 변동 ν›„ data

filter

  <body>
    <div id="app">
      <p>{{ numbers | getOddNums }}</p>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
      const app = new Vue({
        el: "#app",
        data: {
          numbers: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
        },
        filters: {
          getOddNums: function (nums) {
            const oddNums = nums.filter((num) => {
              return num % 2;
            });
            return oddNums;
          },
        },
      });
    </script>
  </body

βœ” μžλ°”μŠ€ν¬λ¦½νŠΈ ν‘œν˜„μ‹ λ§ˆμ§€λ§‰μ— |(νŒŒμ΄ν”„) ν•¨κ»˜ μΆ”κ°€
βœ” μ΄μ–΄μ„œ μ‚¬μš©(chaning) κ°€λŠ₯

'⭐ Personal_Study > Vue' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

SFC (Single File Component)  (0) 2022.11.11
Vue_CLI  (0) 2022.11.09
Vue: Basic Syntax  (0) 2022.11.07
Vue Instance  (0) 2022.11.06
Vue Intro  (0) 2022.11.06

λŒ“κΈ€