Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow inline actor logic #4806

Merged
merged 6 commits into from
Apr 16, 2024
Merged

Conversation

davidkpiano
Copy link
Member

No description provided.

Copy link

changeset-bot bot commented Mar 18, 2024

🦋 Changeset detected

Latest commit: 610b25e

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
xstate Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link

codesandbox-ci bot commented Mar 18, 2024

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

@Andarist
Copy link
Member

The problem is that by allowing inline actor logics you allow them to override the ones that are configured and that leads to problems:

const m = setup({
  types: { children: { foo: 'myChild' } },
  actors: {
    myChild: fromPromise(async () => "")
  }
}).createMachine({
  entry: spawnChild(fromPromise(async () => 100), { id: 'foo' })
})

const actorRef = createActor(m)
const val = actorRef.getSnapshot().children.foo.getSnapshot().output // actual: number | undefined, expected: string | undefined

@davidkpiano
Copy link
Member Author

The problem is that by allowing inline actor logics you allow them to override the ones that are configured and that leads to problems:

const m = setup({
  types: { children: { foo: 'myChild' } },
  actors: {
    myChild: fromPromise(async () => "")
  }
}).createMachine({
  entry: spawnChild(fromPromise(async () => 100), { id: 'foo' })
})

const actorRef = createActor(m)
const val = actorRef.getSnapshot().children.foo.getSnapshot().output // actual: number | undefined, expected: string | undefined

This really makes me think that the way that child actors are defined is a bit awkward currently. Would love to revisit this for v6

@Andarist Andarist marked this pull request as ready for review April 16, 2024 07:51
@davidkpiano davidkpiano merged commit f4e0ec4 into main Apr 16, 2024
2 checks passed
@davidkpiano davidkpiano deleted the davidkpiano/allow-inline-actor-logic branch April 16, 2024 14:13
@github-actions github-actions bot mentioned this pull request Apr 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants