Fix
All checks were successful
Lint / lint (push) Successful in 11s

This commit is contained in:
Julien Valverdé
2025-07-14 21:12:54 +02:00
parent 04c8ecc4e1
commit f419474536
2 changed files with 12 additions and 6 deletions

View File

@@ -87,19 +87,26 @@ export interface Memoized<P> {
readonly propsAreEqual?: Equivalence.Equivalence<P>
}
export const memo: {
export const memo = <T extends Component<any, any, any>>(
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>
): T & Memoized<Component.Props<T>> => Object.setPrototypeOf(
{ ...self, memo: true },
Object.getPrototypeOf(self),
)
export const memoWithEquivalence: {
<T extends Component<any, any, any>>(
propsAreEqual?: Equivalence.Equivalence<Component.Props<T>>
propsAreEqual: Equivalence.Equivalence<Component.Props<T>>
): (
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>
) => T & Memoized<Component.Props<T>>
<T extends Component<any, any, any>>(
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>,
propsAreEqual?: Equivalence.Equivalence<Component.Props<T>>,
propsAreEqual: Equivalence.Equivalence<Component.Props<T>>,
): T & Memoized<Component.Props<T>>
} = Function.dual(2, <T extends Component<any, any, any>>(
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>,
propsAreEqual?: Equivalence.Equivalence<Component.Props<T>>,
propsAreEqual: Equivalence.Equivalence<Component.Props<T>>,
): T & Memoized<Component.Props<T>> => Object.setPrototypeOf(
{ ...self, memo: true, propsAreEqual },
Object.getPrototypeOf(self),

View File

@@ -33,8 +33,7 @@ const SubComponent = Component.make(function* SubComponent() {
return <Text>{id}</Text>
})
const MemoizedSubComponent = Component.memo()(SubComponent)
console.log(MemoizedSubComponent.memo)
const MemoizedSubComponent = Component.memo(SubComponent)
export const Route = createFileRoute("/dev/memo")({
component: RouteComponent,