0.1.0 #1
@@ -90,13 +90,15 @@ export interface Memoized<P> {
|
|||||||
export const memo: {
|
export const memo: {
|
||||||
<T extends Component<any, any, any>>(
|
<T extends Component<any, any, any>>(
|
||||||
propsAreEqual?: Equivalence.Equivalence<Component.Props<T>>
|
propsAreEqual?: Equivalence.Equivalence<Component.Props<T>>
|
||||||
): (self: T) => T & Memoized<Component.Props<T>>
|
): (
|
||||||
|
self: ExcludeKeys<T, keyof Memoized<Component.Props<T>>>
|
||||||
|
) => T & Memoized<Component.Props<T>>
|
||||||
<T extends Component<any, any, any>>(
|
<T extends Component<any, any, any>>(
|
||||||
self: T,
|
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>>
|
): T & Memoized<Component.Props<T>>
|
||||||
} = Function.dual(2, <T extends Component<any, any, any>>(
|
} = Function.dual(2, <T extends Component<any, any, any>>(
|
||||||
self: T,
|
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.assign(
|
): T & Memoized<Component.Props<T>> => Object.assign(
|
||||||
Object.create(Object.getPrototypeOf(self)),
|
Object.create(Object.getPrototypeOf(self)),
|
||||||
|
|||||||
@@ -113,3 +113,4 @@ export const Todo = Component.make(function* Todo(props: TodoProps) {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const MemoizedTodo = Component.memo(Todo)
|
const MemoizedTodo = Component.memo(Todo)
|
||||||
|
const MemoizedTodo2 = Component.memo(MemoizedTodo)
|
||||||
|
|||||||
Reference in New Issue
Block a user