To-Do 앱: Vuex의 대안으로 Composition API
7932 단어 vuevue3es6javascript
소스 코드 및 머리말
다음은 이 기사에서 참조할 소스 코드 및 Codepen 목록입니다.
코드펜: Vue To-do app
GitHub 저장소: todo-app-vue3
Netlify: https://relaxed-yonath-fa8475.netlify.app/
Codepen에서 내가 만든 todo 앱을 살펴보면 Vuex를 사용하지 않고 있다는 것을 알 수 있습니다. 저는 props을 사용하여 데이터를 어린이에게 전달하고 $emit을 사용하여 데이터를 전달합니다. 상위 구성 요소와 통신합니다.
새로운 Composition API의 장점 중 하나는 이제 매우 강력한 구성 요소 외부의 반응 기능에 액세스할 수 있다는 것입니다.
Vue 3 앱을 만들고 구성 요소 코드를 자체 파일에 넣고 기본적으로 Codepen에서 작동하는 것처럼 앱이 작동하도록 만든 후 수행한 작업은 다음과 같습니다.
상태 및 돌연변이 기능을 전역 파일로 이동
가장 먼저 한 일은
/src
에 global.js 파일을 만드는 것이었습니다.global.js
내부에서 reactive
및 readonly
API를 가져왔습니다. 'global.js'의 코드를 살펴보겠습니다. 코드 스니펫에 주석을 추가하겠습니다.import { reactive, readonly } from "vue";
/*
Wrapping our object with reactive() makes,
as it clearly suggests, our object reactive
(it even affects all nested properties).
*/
const state = reactive({
tasks: [
{
id: 1,
description: "Finish the course",
done: false,
},
{..},
{..},
{..},
{..}
],
nextId: 6,
tasksFiltered: [],
activeTab: "all",
})
/*
All these functions below are a combination of
mutations and actions (when comparing with Vuex).
But, of course, we are always free to organize our code
however we want.
*/
const filterTodos = function(filterOption) {..}
const addTodo = function(todo) {..}
const deleteTask = function(task) {..}
const toggleTaskStatus = function(task) {..}
// Export an object with the state and mutations
export default {
// With readonly(), we prevent our state to be mutated
// outside of the global.js module
state: readonly(state),
filterTodos,
addTodo,
deleteTask,
toggleTaskStatus
}
제공/주입 사용
그런 다음 모든
global.js
자식 구성 요소에 액세스할 수 있는 App.vue
("사용자 지정 저장소")를 만들어야 합니다. 그렇게 하려면 모든 하위 구성 요소에서 provide
를 사용할 수 있도록 App.vue
내부의 global.js
속성을 사용해야 하므로 global.js
에서 App
를 가져온 다음 제공합니다.그 직후, 각 구성 요소에서 사용하려면
inject
global
가 필요합니다.이제 각 하위 구성요소의 스크린샷입니다(하지만 언제든지 저장소로 이동하여 코드를 살펴볼 수 있음을 기억하세요).
TodoList.vue
Form.vue
헤더.vue
이 접근 방식은 개선될 수 있으며 더 간단한 대안이 될 수 있습니다. 물론 Vuex는 디버깅이 더 쉽고 vue 개발 도구에서 변형을 추적할 수 있습니다. 그래서 그것은 항상 우리가 작업하고 있는 프로젝트나 개인적인 선택과 관점에 달려 있습니다.
이 접근법에 대해 어떻게 생각하십니까?
의견 있으십니까?
이 기사가 도움이 되었기를 바랍니다. 🙂
Reference
이 문제에 관하여(To-Do 앱: Vuex의 대안으로 Composition API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/diegolepore/to-do-app-composition-api-as-an-alternative-to-vuex-1hb0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)