[TIL] Vue.js basic 2


双方向データのバインド


入力ラベルに入力した値を画面で表示する場合は、次のような論理を作成できます.
  <body>
    <div id="app">
        <input type="text" @keyup="getValue">
        {{ text }}
      </form>
    </div>
    <script>
      new Vue({
        el: "#app",
        data: {
          text: "",
        },
        methods: {
            getValue(e) {
                this.text = e.target.value
            }
        }
      });
    </script>
  </body>
ただし、双方向バインドは、以下のv-modelを使用して行うこともできます.
  <body>
    <div id="app">
        <input type="text" v-model="text">
        {{ text }}
      </form>
    </div>
    <script>
      new Vue({
        el: "#app",
        data: {
          text: "",
        },
      });
    </script>
  </body>

計算プロパティ


テンプレート内の演算が多すぎると、コードが肥大化し、メンテナンスが困難になります.
<div id="example">
  {{ message.split('').reverse().join('') }}
</div>
  <body>
    <div id="app">
        {{ reverseMessage }}
      </form>
    </div>
    <script>
      new Vue({
        el: "#app",
        data: {
            message: "안녕하세요"
        },
        computed: {
            reverseMessage() {
                return this.message.split('').reverse().join('')
            }
        }
      });
    </script>
  </body>
このような複雑な論理をcomputed属性で使用すると,可読性が大幅に向上する.

watchプロパティ


ほとんどの場合、計算プロパティは適切ですが、ユーザーが作成したモニタが必要になる場合があります.
  <body>
    <div id="app">
      {{ message }}
      <button @click="changeValue">changeValue</button>
      {{ updated }}
    </div>
    <script>
      new Vue({
        el: "#app",
        data: {
          message: "반갑습니다",
          updated: "No",
        },
        methods: {
          changeValue() {
            this.message = "안녕히가세요";
            this.updated = "Yes";
          },
        },
        watch: {
          message(newValue, oldValue) {
            console.log(newValue, oldValue);
          },
        },
      });
    </script>
  </body>
watchプロパティ監視メッセージ.この場合、watchプロパティにmessageという関数を作成できます.この関数はパラメータとしてnewvalueとoldValueを受け入れます.