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.)
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.)
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.)