Comments (2)
@mogsie Good points - I wouldn't want to aggregate them naïvely, there could be conflicts (and definitely ambiguity as to which state the data relates to).
Hmm... since the way we're defining state values hierarchically (e.g., { foo: { bar: 'one', baz: 'two' } }
) is essentially an easier way of defining them by ID (e.g., 'foo.bar.one'
, 'foo.baz.two'
), we can use those unique IDs in the returned "datamodel":
State {
value: { foo: { bar: 'one', baz: 'two' },
data: {
foo: // data for foo
'foo.bar': // data for foo.bar
'foo.bar.one': // data for foo.bar.one
'foo.baz': // data for foo.baz
'foo.baz.two': // data for foo.baz.two
}
}
It looks a little funny, but the strings are the exact IDs assigned to each of the state nodes and this would guarantee no conflicts, as well as quick data look-up time (we can always have a helper function/method for retrieving data based on state, e.g., state.getData({ foo: 'bar' })
).
Thoughts on this approach?
from xstate.
How would you treat substate data? And parallel state data? Would they be aggregated, or would one be able to grab them all? For parallel states it becomes difficult, because you could easily have to conflicting values for a property, both being "valid".
from xstate.
Related Issues (20)
- Bug: Exit actions aren't triggered when machine is stopped HOT 3
- Bug: Logger not propagated to child machines from root HOT 2
- Bug: React fash refresh crashes with element reference in machine context HOT 1
- Bug: Output should be strongly typed and automatically set once a final state is reached HOT 4
- Bug: Circular type reference in Machine Definition resolves as Actor<any> HOT 1
- Bug: XState source code can't be typechecked with TS 5.4 HOT 8
- Bug: After 5.5, type of state.context from @xstate/react useMachine being inferred incorrectly with @xstate/react < 4.0.2 HOT 5
- Bug: Using `raise` in entry action with `always.target` to final node doesn't execute HOT 3
- Bug: Unable to type `sendBack` in `fromCallback` HOT 7
- Bug: `const` in createMachine type definition breaks the method's typing HOT 6
- Bug: v5 `return assign()` from action behavior change from v4 HOT 7
- Bug: ToProvidedActor issue HOT 1
- Bug: npm version of `@xstate/solid` lists a peer dependency to `[email protected]` causing a peer dependency warning when using xsate v5 HOT 4
- Include `stopChild` in the first argument of the assign function HOT 10
- Bug: Type Declarations in xstate package seem to be erroneous
- Bug: Typescript bug: No Type Error for Non Declared Event HOT 1
- All resolver kinds and implementation types should receive all possible event types outside of transitions HOT 3
- Bug: reenter doesn't work if target not set on transition HOT 1
- Bug: Second argument of sendTo as a plain object causes typescript error HOT 3
- [feature request] finally in machine HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xstate.