| 452 | } |
| 453 | |
| 454 | func UseEffect(ctx context.Context, fn func() func(), deps []any) { |
| 455 | // note UseEffect never actually runs anything, it just queues the effect to run later |
| 456 | vc, hookVal := getHookFromCtx(ctx) |
| 457 | if !hookVal.Init { |
| 458 | hookVal.Init = true |
| 459 | hookVal.Fn = fn |
| 460 | hookVal.Deps = deps |
| 461 | vc.Root.AddEffectWork(vc.Comp.WaveId, hookVal.Idx) |
| 462 | return |
| 463 | } |
| 464 | if depsEqual(hookVal.Deps, deps) { |
| 465 | return |
| 466 | } |
| 467 | hookVal.Fn = fn |
| 468 | hookVal.Deps = deps |
| 469 | vc.Root.AddEffectWork(vc.Comp.WaveId, hookVal.Idx) |
| 470 | } |
| 471 | |
| 472 | func numToString[T any](value T) (string, bool) { |
| 473 | switch v := any(value).(type) { |