@@ -901,6 +901,10 @@ module ReactElementType =
901901
902902type PropsEqualityComparison<'props> = 'props -> 'props -> bool
903903
904+ [<Import("memo", from="react")>]
905+ let private reactMemo<'props> (render: 'props -> ReactElement) : ReactComponentType<'props> =
906+ jsNative
907+
904908/// React.memo is a higher order component. It’s similar to React.PureComponent but for function components instead of
905909/// classes.
906910///
@@ -910,8 +914,12 @@ type PropsEqualityComparison<'props> = 'props -> 'props -> bool
910914///
911915/// By default it will only shallowly compare complex objects in the props object. If you want control over the
912916/// comparison, you can use `memoWith`.
917+ let memo<'props> (name: string) (render: 'props -> ReactElement) : ReactComponentType<'props> =
918+ render?displayName <- name
919+ reactMemo(render)
920+
913921[<Import("memo", from="react")>]
914- let memo <'props> (render: 'props -> ReactElement) : ReactComponentType<'props> =
922+ let private reactMemoWith <'props> (render: 'props -> ReactElement, areEqual: PropsEqualityComparison<'props> ) : ReactComponentType<'props> =
915923 jsNative
916924
917925/// React.memo is a higher order component. It’s similar to React.PureComponent but for function components instead of
@@ -922,10 +930,10 @@ let memo<'props> (render: 'props -> ReactElement) : ReactComponentType<'props> =
922930/// component, and reuse the last rendered result.
923931///
924932/// This version allow you to control the comparison used instead of the default shallow one by provide a custom
925- /// comparison function as the second argument .
926- [<Import("memo", from="react")>]
927- let memoWith<'props> (render: 'props -> ReactElement, areEqual: PropsEqualityComparison<'props>) : ReactComponentType<'props> =
928- jsNative
933+ /// comparison function.
934+ let memoWith<'props> (name: string) (areEqual: PropsEqualityComparison<'props>) (render: 'props -> ReactElement) : ReactComponentType<'props> =
935+ render?displayName <- name
936+ reactMemoWith(render, areEqual)
929937
930938/// Create a ReactElement to be rendered from an element type, props and children
931939let inline ofElementType<'props> (comp: ReactElementType<'props>) (props: 'props) (children: ReactElement seq): ReactElement =
0 commit comments