dillon1000/react
Commit
Browse files Treat setState as non-reactive
Updates PruneNonReactiveDependencies to treat setState functions as non-reactive, since we know they have a stable identity. This is based on type inference and our recently added definitions for useState and its return type, so it's conservative and will only work when our inference can prove that the scope dependency has the SetState type. Note that this approach is simple and has limitations, notably the fact that the setState is non-reactive doesn't propagate. But it's simple, trivially correct, and already improves codegen somewhat, so i figured it's worth landing for now. ## Test Plan Tested on internal app
Changed paths10 files
First-parent comparisoncompiler/forget/src/HIR/HIR.ts ModifiedM compiler/forget/src/ReactiveScopes/PrintReactiveFunction.ts ModifiedM compiler/forget/src/ReactiveScopes/PruneNonReactiveDependencies.ts ModifiedM compiler/forget/src/__tests__/fixtures/compiler/concise-arrow-expr.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/controlled-input.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/disable-jsx-memoization.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/inadvertent-mutability-readonly-lambda.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/invalid-freeze-mutable-lambda.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/nested-function-shadowed-identifiers.expect.md ModifiedM compiler/forget/src/__tests__/fixtures/compiler/use-callback-simple.expect.md ModifiedPatch
Files changed
Rendering syntax-highlighted changes…