page.mdx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { pageMetadata } from "@/lib/page-metadata"
  2. export const metadata = pageMetadata("docs/api/xstate")
  3. # @json-render/xstate
  4. [XState Store](https://stately.ai/docs/xstate-store) adapter for json-render's `StateStore` interface.
  5. Requires `@xstate/store` v3+.
  6. ## Installation
  7. ```bash
  8. npm install @json-render/xstate @json-render/core @json-render/react @xstate/store
  9. ```
  10. ## xstateStoreStateStore
  11. Create a `StateStore` backed by an `@xstate/store` atom.
  12. ```typescript
  13. import { xstateStoreStateStore } from "@json-render/xstate";
  14. ```
  15. ### Options
  16. <table>
  17. <thead>
  18. <tr>
  19. <th>Option</th>
  20. <th>Type</th>
  21. <th>Required</th>
  22. <th>Description</th>
  23. </tr>
  24. </thead>
  25. <tbody>
  26. <tr>
  27. <td><code>atom</code></td>
  28. <td><code>{'Atom<StateModel>'}</code></td>
  29. <td>Yes</td>
  30. <td>An <code>@xstate/store</code> atom (from <code>createAtom</code>) holding the json-render state model.</td>
  31. </tr>
  32. </tbody>
  33. </table>
  34. ### Example
  35. ```typescript
  36. import { createAtom } from "@xstate/store";
  37. import { xstateStoreStateStore } from "@json-render/xstate";
  38. import { StateProvider } from "@json-render/react";
  39. const uiAtom = createAtom({ count: 0 });
  40. const store = xstateStoreStateStore({ atom: uiAtom });
  41. ```
  42. ```tsx
  43. <StateProvider store={store}>
  44. {/* json-render reads/writes go through @xstate/store */}
  45. </StateProvider>
  46. ```
  47. ## Re-exports
  48. <table>
  49. <thead>
  50. <tr>
  51. <th>Export</th>
  52. <th>Source</th>
  53. </tr>
  54. </thead>
  55. <tbody>
  56. <tr>
  57. <td><code>StateStore</code></td>
  58. <td><code>@json-render/core</code></td>
  59. </tr>
  60. </tbody>
  61. </table>