Vuex 스토어에 게터 추가하기
                                            
                                                
                                                
                                                
                                                
                                                
                                                 6540 단어  programmingjavascriptvuewebdev
                    
지금 http://jauyeung.net/subscribe/에서 내 이메일 목록을 구독하십시오.
Vue.js는 대화형 프론트 엔드 앱을 개발하는 데 사용할 수 있는 사용하기 쉬운 웹 앱 프레임워크입니다.
Vuex를 사용하면 Vue 앱의 상태를 중앙 위치에 저장할 수 있습니다.
이 기사에서는 다른 스토어 상태에서 파생된 상태를 추가하기 위해 Vuex 스토어에 getter를 추가하는 방법을 살펴보겠습니다.
우리 스토어에 게터 추가하기
다음과 같이 getters 속성을 추가하여 Vuex 스토어에 getter를 추가할 수 있습니다.
index.js :
 const store = new Vuex.Store({  
  state: {  
    todos: [  
      { id: 1, text: "todo1", done: true },  
      { id: 2, text: "todo2", done: false }  
    ]  
  },  
  getters: {  
    doneTodos: state => {  
      return state.todos.filter(todo => todo.done);  
    }  
  }  
});
new Vue({  
  el: "#app",  
  store,  
  computed: {  
    doneTodos() {  
      return this.$store.getters.doneTodos;  
    },  
    ...Vuex.mapState({  
      todos: "todos"  
    })  
  }  
});
index.html :
 <!DOCTYPE html>  
<html>  
  <head>  
    <title>App</title>  
    <meta charset="UTF-8" />  
    <script src="https://unpkg.com/vue/dist/vue.js"></script>  
    <script src="https://unpkg.com/vuex"></script>  
  </head>  
  <body>  
    <div id="app">  
      <div>  
        <p>Todos:</p>  
        <div v-for="todo of todos">{{todo.text}}</div>  
        <p>Done Todos:</p>  
        <div v-for="todo of doneTodos">{{todo.text}}</div>  
      </div>  
    </div>  
    <script src="index.js"></script>  
  </body>  
</html>
코드에는 getters 개체가 있습니다.
 getters: {  
  doneTodos: state => {  
    return state.todos.filter(todo => todo.done);  
  }  
}
todos 상태에서 상태를 파생합니다.
그런 다음 다음과 같이 작성하여 doneTodos getter에 액세스했습니다.
 computed: {  
  doneTodos() {  
    return this.$store.getters.doneTodos;  
  },  
  ...Vuex.mapState({  
    todos: "todos"  
  })  
}
Vue 인스턴스에서.
그런 다음 항목이 템플릿에서 렌더링되고 다음을 얻습니다.
 Todos:todo1  
todo2  
Done Todos:todo1
표시됩니다.
 메서드 스타일 액세스
하나 이상의 인수가 있는 구성 요소에서 getter를 호출할 수 있도록 getter 함수에서 함수를 반환할 수 있습니다.
예를 들어 ID로 할 일을 가져오는 getter를 만들고 싶다면 다음과 같이 작성할 수 있습니다.
index.js :
 const store = new Vuex.Store({  
  state: {  
    todos: [  
      { id: 1, text: "todo1", done: true },  
      { id: 2, text: "todo2", done: false }  
    ]  
  },  
  getters: {  
    getTodoById: state => id => {  
      return state.todos.find(todo => todo.id === id);  
    }  
  }  
});
new Vue({  
  el: "#app",  
  store,  
  computed: Vuex.mapState({  
    todos: "todos"  
  }),  
  methods: {  
    getTodoById(id) {  
      return this.$store.getters.getTodoById(id);  
    }  
  }  
});
index.html :
 <!DOCTYPE html>  
<html>  
  <head>  
    <title>App</title>  
    <meta charset="UTF-8" />  
    <script src="https://unpkg.com/vue/dist/vue.js"></script>  
    <script src="https://unpkg.com/vuex"></script>  
  </head>  
  <body>  
    <div id="app">  
      {{getTodoById(1).text}}  
    </div>  
    <script src="index.js"></script>  
  </body>  
</html>
그런 다음 화면에 todo1가 표시됩니다.
getter를 정의하는 다음 코드가 있습니다.
 getters: {  
  getTodoById: state => id => {  
    return state.todos.find(todo => todo.id === id);  
  }  
}
위의 코드는 함수를 반환한 다음 주어진 ID로 할 일을 반환합니다.
그런 다음 다음과 같이 getTodoById 메서드를 정의하여 Vue 인스턴스에서 액세스합니다.
 getTodoById(id) {  
  return this.$store.getters.getTodoById(id);  
}
마지막으로 다음과 같이 작성하여 템플릿에서 렌더링합니다.
 {{getTodoById(1).text}}
 mapGetters 도우미
mapGetters 도우미를 사용하여 다음과 같이 getter를 계산된 속성에 매핑할 수 있습니다.
index.js :
 const store = new Vuex.Store({  
  state: {  
    todos: [  
      { id: 1, text: "todo1", done: true },  
      { id: 2, text: "todo2", done: false }  
    ]  
  },  
  getters: {  
    doneTodosCount: state => {  
      return state.todos.filter(todo => todo.done).length;  
    }  
  }  
});
new Vue({  
  el: "#app",  
  store,  
  computed: Vuex.mapGetters(["doneTodosCount"])  
});
index.html :
 <!DOCTYPE html>  
<html>  
  <head>  
    <title>App</title>  
    <meta charset="UTF-8" />  
    <script src="https://unpkg.com/vue/dist/vue.j"></script>  
    <script src="https://unpkg.com/vuex"></script>  
  </head>  
  <body>  
    <div id="app">  
      {{doneTodosCount}}  
    </div>  
    <script src="index.js"></script>  
  </body>  
</html>
그런 다음 doneTodosCount getter를 다음과 같은 이름을 가진 계산된 속성에 매핑했기 때문에 1이 표시됩니다.
 computed: Vuex.mapGetters(["doneTodosCount"])
 결론
getter를 사용하여 다른 상태에서 파생된 상태를 추가할 수 있습니다.
getter를 정의하기 위해 getters 속성에 상태에서 파생된 것을 반환하는 메서드 또는 상태에서 파생된 함수를 추가합니다.
구성 요소에 포함하려면 this.$store.getters 메서드를 사용하거나 mapGetters 메서드를 사용할 수 있습니다.
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(Vuex 스토어에 게터 추가하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://dev.to/aumayeung/adding-getters-to-a-vuex-store-dko
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
const store = new Vuex.Store({  
  state: {  
    todos: [  
      { id: 1, text: "todo1", done: true },  
      { id: 2, text: "todo2", done: false }  
    ]  
  },  
  getters: {  
    doneTodos: state => {  
      return state.todos.filter(todo => todo.done);  
    }  
  }  
});
new Vue({  
  el: "#app",  
  store,  
  computed: {  
    doneTodos() {  
      return this.$store.getters.doneTodos;  
    },  
    ...Vuex.mapState({  
      todos: "todos"  
    })  
  }  
});
<!DOCTYPE html>  
<html>  
  <head>  
    <title>App</title>  
    <meta charset="UTF-8" />  
    <script src="https://unpkg.com/vue/dist/vue.js"></script>  
    <script src="https://unpkg.com/vuex"></script>  
  </head>  
  <body>  
    <div id="app">  
      <div>  
        <p>Todos:</p>  
        <div v-for="todo of todos">{{todo.text}}</div>  
        <p>Done Todos:</p>  
        <div v-for="todo of doneTodos">{{todo.text}}</div>  
      </div>  
    </div>  
    <script src="index.js"></script>  
  </body>  
</html>
getters: {  
  doneTodos: state => {  
    return state.todos.filter(todo => todo.done);  
  }  
}
computed: {  
  doneTodos() {  
    return this.$store.getters.doneTodos;  
  },  
  ...Vuex.mapState({  
    todos: "todos"  
  })  
}
Todos:todo1  
todo2  
Done Todos:todo1
하나 이상의 인수가 있는 구성 요소에서 getter를 호출할 수 있도록 getter 함수에서 함수를 반환할 수 있습니다.
예를 들어 ID로 할 일을 가져오는 getter를 만들고 싶다면 다음과 같이 작성할 수 있습니다.
index.js :const store = new Vuex.Store({  
  state: {  
    todos: [  
      { id: 1, text: "todo1", done: true },  
      { id: 2, text: "todo2", done: false }  
    ]  
  },  
  getters: {  
    getTodoById: state => id => {  
      return state.todos.find(todo => todo.id === id);  
    }  
  }  
});
new Vue({  
  el: "#app",  
  store,  
  computed: Vuex.mapState({  
    todos: "todos"  
  }),  
  methods: {  
    getTodoById(id) {  
      return this.$store.getters.getTodoById(id);  
    }  
  }  
});
index.html :<!DOCTYPE html>  
<html>  
  <head>  
    <title>App</title>  
    <meta charset="UTF-8" />  
    <script src="https://unpkg.com/vue/dist/vue.js"></script>  
    <script src="https://unpkg.com/vuex"></script>  
  </head>  
  <body>  
    <div id="app">  
      {{getTodoById(1).text}}  
    </div>  
    <script src="index.js"></script>  
  </body>  
</html>
그런 다음 화면에
todo1가 표시됩니다.getter를 정의하는 다음 코드가 있습니다.
getters: {  
  getTodoById: state => id => {  
    return state.todos.find(todo => todo.id === id);  
  }  
}
위의 코드는 함수를 반환한 다음 주어진 ID로 할 일을 반환합니다.
그런 다음 다음과 같이
getTodoById 메서드를 정의하여 Vue 인스턴스에서 액세스합니다.getTodoById(id) {  
  return this.$store.getters.getTodoById(id);  
}
마지막으로 다음과 같이 작성하여 템플릿에서 렌더링합니다.
{{getTodoById(1).text}}
mapGetters 도우미
mapGetters 도우미를 사용하여 다음과 같이 getter를 계산된 속성에 매핑할 수 있습니다.
index.js :
 const store = new Vuex.Store({  
  state: {  
    todos: [  
      { id: 1, text: "todo1", done: true },  
      { id: 2, text: "todo2", done: false }  
    ]  
  },  
  getters: {  
    doneTodosCount: state => {  
      return state.todos.filter(todo => todo.done).length;  
    }  
  }  
});
new Vue({  
  el: "#app",  
  store,  
  computed: Vuex.mapGetters(["doneTodosCount"])  
});
index.html :
 <!DOCTYPE html>  
<html>  
  <head>  
    <title>App</title>  
    <meta charset="UTF-8" />  
    <script src="https://unpkg.com/vue/dist/vue.j"></script>  
    <script src="https://unpkg.com/vuex"></script>  
  </head>  
  <body>  
    <div id="app">  
      {{doneTodosCount}}  
    </div>  
    <script src="index.js"></script>  
  </body>  
</html>
그런 다음 doneTodosCount getter를 다음과 같은 이름을 가진 계산된 속성에 매핑했기 때문에 1이 표시됩니다.
 computed: Vuex.mapGetters(["doneTodosCount"])
 결론
getter를 사용하여 다른 상태에서 파생된 상태를 추가할 수 있습니다.
getter를 정의하기 위해 getters 속성에 상태에서 파생된 것을 반환하는 메서드 또는 상태에서 파생된 함수를 추가합니다.
구성 요소에 포함하려면 this.$store.getters 메서드를 사용하거나 mapGetters 메서드를 사용할 수 있습니다.
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(Vuex 스토어에 게터 추가하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://dev.to/aumayeung/adding-getters-to-a-vuex-store-dko
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
const store = new Vuex.Store({  
  state: {  
    todos: [  
      { id: 1, text: "todo1", done: true },  
      { id: 2, text: "todo2", done: false }  
    ]  
  },  
  getters: {  
    doneTodosCount: state => {  
      return state.todos.filter(todo => todo.done).length;  
    }  
  }  
});
new Vue({  
  el: "#app",  
  store,  
  computed: Vuex.mapGetters(["doneTodosCount"])  
});
<!DOCTYPE html>  
<html>  
  <head>  
    <title>App</title>  
    <meta charset="UTF-8" />  
    <script src="https://unpkg.com/vue/dist/vue.j"></script>  
    <script src="https://unpkg.com/vuex"></script>  
  </head>  
  <body>  
    <div id="app">  
      {{doneTodosCount}}  
    </div>  
    <script src="index.js"></script>  
  </body>  
</html>
computed: Vuex.mapGetters(["doneTodosCount"])
getter를 사용하여 다른 상태에서 파생된 상태를 추가할 수 있습니다.
getter를 정의하기 위해
getters 속성에 상태에서 파생된 것을 반환하는 메서드 또는 상태에서 파생된 함수를 추가합니다.구성 요소에 포함하려면
this.$store.getters 메서드를 사용하거나 mapGetters 메서드를 사용할 수 있습니다.
                Reference
이 문제에 관하여(Vuex 스토어에 게터 추가하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aumayeung/adding-getters-to-a-vuex-store-dko텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)