React에서 간단한 상태 머신 구축
이미 흥분? 시작하자.
toggleStateMachine
및 active
두 상태 사이를 전환하는 inactive
머신이라는 매우 간단한 상태 머신으로 시작합니다.다음은 상태 시스템에 대한 멋진 시각화 도우미와 상태 머신이 한 상태에서 다른 상태로 전환되는 방식입니다.
XState Visualizer
Visualizer 페이지에 있으면 처음부터 빌드할 것이므로
definitions
탭을 비웁니다.Machine()
의 인스턴스가 됩니다.const toggleStateMachine = new Machine({})
id
를 부여해 보겠습니다. 이를 위해 변수 이름을 사용할 수도 있습니다.const toggleStateMachine = new Machine({
id:'toggleStateMachine'
})
active
및 inactive
두 가지 상태가 있습니다. 따라서 자연스럽게 초기 상태는 inactive
상태가 됩니다.const toggleStateMachine = new Machine({
id:'toggleStateMachine',
initial:'inactive'
})
states
는 개체입니다. 우리는 이 기계가 가질 수 있는 모든 다른 속성states
에 속성을 추가할 수 있습니다.const toggleStateMachine = new Machine({
id: "toggleStateMachine",
initial: "inactive",
states: {
inactive: {},
active: {}
}
});
update
버튼을 클릭합니다. 짜잔! inactive
상태가 됩니다. 따라서 이벤트가 발생하면 inactive
상태가 active
상태로 변경되어야 합니다. 이것이 당신이하는 방법입니다.const toggleStateMachine = new Machine({
id: "toggleStateMachine",
initial: "inactive",
states: {
inactive: {
on: {
TOGGLE: "active"
}
},
active: {}
}
});
on
속성은 수신해야 하는 이벤트를 초기 상태에 알려줍니다. 여기서 on
속성은 inactive
상태에 TOGGLE
이벤트를 수신해야 함을 알려줍니다.마찬가지로
active
속성은 TOGGLE
이벤트를 수신해야 합니다. 따라서 active
상태에서 토글이 트리거되면 다시 inactive
상태로 전환되어야 합니다.const toggleStateMachine = new Machine({
id: "toggleStateMachine",
initial: "inactive",
states: {
inactive: {
on: {
TOGGLE: "active"
}
},
active: {
on: {
TOGGLE: "inactive"
}
}
}
});
그게 다야!. 우리의 상태 머신은 React 애플리케이션에 통합될 준비가 되었습니다.
import { useMachine } from '@xstate/react';
const toggleStateMachine = new Machine({
id: "toggleStateMachine",
initial: "inactive",
states: {
inactive: {
on: {
TOGGLE: "active"
}
},
active: {
on: {
TOGGLE: "inactive"
}
}
}
});
function Toggle() {
const [current, send] = useMachine(toggleStateMachine);
return (
<button onClick={() => send('TOGGLE')}>
{current.matches('inactive') ? 'Off' : 'On'}
</button>
);
}
더 읽어보기
글쎄요, 여러분!. 읽어 주셔서 감사합니다. 자세한 내용은 공식XState 문서를 참조하시기 바랍니다.
Reference
이 문제에 관하여(React에서 간단한 상태 머신 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ajinkabeer/build-a-simple-state-machine-in-react-2oa4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)