상태 머신 및 Xstate부터 시작합니다!
16410 단어 vuexstateproductivityjavascript
들어본 적이 있는 상태 머신의 인기 있는 예가 많이 있습니다.
상태 시스템은 복잡한 규칙 및 조건 집합을 나타내는 매우 간결한 방법이므로 프런트엔드 애플리케이션에서 사용을 확장할 수 있는 방법을 알아보겠습니다.
프론트엔드에 상태 머신이 필요한 이유는 무엇입니까?
브라우저의 상태 관리는 특히 복잡한 상태 관리가 있는 대규모 애플리케이션에서 작업할 때 항상 까다로운 부분이었습니다. UI 프레임워크는 원하는 결과를 얻기 위해 응용 프로그램 상태를 DOM 노드로 전환하는 중요한 역할을 합니다.
상태 머신은 응용 프로그램이 주어진 시간에 하나의 상태에만 있을 수 있도록 응용 프로그램의 상태를 모델링하는 매우 유용한 방법입니다. 이러한 모든 이점은 결국 새로운 이벤트, 새로운 코너 케이스 등이 필요한 애플리케이션의 확장과 관련된 문제를 해결하는 데 도움이 될 것입니다.
우리의 응용 프로그램부터 시작합니다.
Xstate를 사용하여 Vue.js에서 간단한 Todo 애플리케이션을 생성하는 것으로 시작하겠습니다.
첫 번째 단계는 TodoList를 만드는 데 필요한 모든 가능한 UI 상태를 결정하는 것입니다. 응용 프로그램에 필요한 기본 상태와 작업을 적어두기 시작했습니다.
위의 포인터를 사용하여 내 애플리케이션의 모든 상태와 작업을 다루는 Xstate Viz의 기본 상태 차트를 만들었습니다.
상태 기계 정의 코드:
Machine(
{
id: 'Todo',
initial: 'idle',
context: {
user: null,
todoList: [],
delay: 0
},
states: {
idle: {
on: {
fetch: 'list'
}
},
list: {
invoke: {
id: 'fetchList',
src: (context, event) => {
return context.todoList
},
onDone: {
target: 'resolved'
},
onError: 'rejected'
},
on: {
listItems: {
target: 'todoItemActions',
actions: 'addListItem'
// actions: ['fetchListItems']
}
}
},
resolved: {
type: 'final'
},
rejected: {
on: {
fetch: 'list'
}
},
todoItemActions: {
type: 'parallel',
states: {
createTodoItem: {
initial: 'add_details',
states: {
idle: {
on: {
create: 'add_details'
}
},
add_details: {
on: {
fillDetails: {
target: 'createSuccess',
actions: 'createNewTodoItem'
}
}
},
createSuccess: {}
}
},
deleteTodoItem: {
initial: 'idle',
states: {
idle: {
on: {
select_item: 'deleteItem'
}
},
deleteItem: {
on: {
delete: {
target: 'deleteSuccess',
actions: 'deleteTodoItem'
}
}
},
deleteSuccess: {}
}
},
editTodoItem: {
initial: 'idle',
states: {
idle: {
on: {
edit: 'edit_details'
}
},
edit_details: {
on: {
fill_details: {
target: 'editSuccess',
actions: 'editTodoItem'
}
}
},
editSuccess: {}
}
}
}
}
}
},
{
actions: {
createNewTodoItem: (context, event) => {
console.log('create new todo item', context)
},
addListItem: (context, event) => {
console.log('add list item', context, event)
},
deleteTodoItem: (context, event) => {
console.log("delete todo item", context, event)
},
editTodoItem: (context, event) => {
console.log("edit todo item", context, event)
}
}
}
)
Visualizer에서 위의 상태 시스템 정의를 확인할 수 있습니다.
다음 포스트에서는 Vue js에서 Xstate를 사용하여 Todo 앱의 통합 및 생성에 대해 다룰 것입니다.
영감을 얻은 멋진 기사가 웹에 몇 개 있습니다. 확인해보세요!🙈
Reference
이 문제에 관하여(상태 머신 및 Xstate부터 시작합니다!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jasmin/starting-with-state-machine-and-xstate-1972텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)