User inputs, dataflow, and state management
Communication between componens is handled by a state store. Refer to the src/store
directory to lean about the various state properties and methods.
Individual web components handle user interactions by listening to events such as click
, change
, etc.
Components may react to user inputs by updating the shared state which in turn may cause other components to be updated.
flowchart LR
userinput("User input events")
state[("state store")]
userinput --> compA
compA --> state
state --> compB
subgraph components
compA["Component A"]
compB["Component B"]
end
State store
SkrÄfoto uses MobX state management module to enable different components to share and exchange data amongst themselves.
You can look up /src/state/index.js
to check what properties and actions are available.
Here is a simple example of how state is read and updated within a component:
import { state, reaction, when, autorun } from '../../state/index.js'
let viewPosition
// Reading a state property directly
viewPosition = state.view.position
// React when a state property is changed
autorun(() => {
viewPosition = state.view.position
})
// Setting state properties
state.setView = {position: [574764,6220953]}