source

Vue.js의 'data:'와 'data()'의 차이점은 무엇입니까?

factcode 2022. 9. 22. 00:08
반응형

Vue.js의 'data:'와 'data()'의 차이점은 무엇입니까?

데이터 옵션을 두 가지 방법으로 사용했습니다.첫 번째 스니펫 데이터 객체는 키 값을 포함하지만 두 번째 데이터는 함수이다.개인에게 혜택이 있나요?Vue.js Docs에서 관련 설명을 찾을 수 없습니다.다음 2개의 코드 스니펫이 있습니다.

new Vue({
  el: "#app",
  data: {
      message: 'hello mr. magoo'
    }

});

new Vue({
  el: "#app",
  data() {
    return {
      message: 'hello mr. magoo'
    }
  }
});

둘 다 같은 결과를 내게 주고 있다.

당신의 구체적인 코드 예를 고려할 때 당신의 질문에 대한 코멘트가 요점을 놓친 것 같습니다.

루트 Vue 인스턴스(예:new Vue({ ... }), 를 간단하게 사용할 수 있습니다.data: { ... }문제없이.이 문제는 재사용 가능한 컴포넌트가 정의되어 있는 경우입니다.Vue.component(...)이 경우 다음 중 하나를 사용해야 합니다.data() {return { ... };}또는data: function() {return { ... };}.

그 이유는 재사용 가능한 자식 구성 요소의 개별 인스턴스에 대해 작동 중인 모든 데이터를 포함하는 고유한 개체가 존재하도록 하기 위함입니다.하위 구성 요소에서 대신data: { ... }이 데이터 오브젝트는 하위 컴포넌트 간에 공유되므로 몇 가지 심각한 버그가 발생할 수 있습니다.

이 문제에 대한 자세한 내용은 Vue.js 문서의 해당 섹션을 참조하십시오.

[Vue warn] :"data" 옵션은 구성 요소 정의에서 인스턴스별 값을 반환하는 함수여야 합니다.

따라서 새로운 vue 인스턴스 선량을 시작하는 것은 데이터 간에 중요하지 않습니다.{}이(가) 개체 또는 데이터(){return{}} 또는 데이터:function(){return{}}로 지정됩니다.

컴포넌트에 관한 한 중요한 예를 들어 보겠습니다.

<body>
    <div id="app">
        <counter></counter>
        <counter></counter>
    </div>
    <script>
         Vue.component('counter', {
             template: '<button v-on:click="counter += 1">{{ counter }}</button>',
             data: {
                 counter:0
             }
         });
    </script>

출력:

[Vue warn]: The "data" option should be a function that returns a per-instance value in component definitions.

이제 vue 개체로 보겠습니다.

<body>
    <div id="app">
        <button v-on:click="counter += 1">{{ counter }}</button>
        <button v-on:click="counter += 1">{{ counter }}</button>
    </div>
    <script>

        new Vue({
            el: '#app',
            /*data() {
                return {
                    counter:0
                }
            },*/
            //or (output same)
            /*data: function () {
                return {
                    counter: 0
                }
            }*/
            //or (output same)
            data:{
                counter:0
            }

        });
    </script>

</body>

//이제 컴포넌트 내의 데이터로 동일한 컴포넌트를 반복해서 재사용해 보겠습니다.

<body>
    <div id="app">
        <counter></counter>
        <counter></counter>
        <counter></counter>
    </div>
    <script>

        Vue.component('counter', {
            template: '<button v-on:click="counter += 1">{{ counter }}</button>',
            data: function () {
                return {
                    counter: 0
                }
            }
        })

        new Vue({
            el: '#app'
        });
    </script>

</body>

언급URL : https://stackoverflow.com/questions/48176345/what-is-difference-between-data-and-data-in-vue-js

반응형