Skip to content

Commit 78aa8ce

Browse files
zaaackalfonsogarciacaro
authored andcommitted
Remove isomorphicExec in createElement helpers
1 parent ff7b5ff commit 78aa8ce

File tree

2 files changed

+36
-44
lines changed

2 files changed

+36
-44
lines changed

src/Fable.React/Fable.Helpers.Isomorphic.fs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,12 @@ open Fable.Helpers.React
3333

3434
/// Isomorphic helper function for conditional executaion
3535
/// it will execute `clientFn model` on the client side and `serverFn model` on the server side
36-
let inline isomorphicExec clientFn serverFn model =
37-
ServerRenderingInternal.isomorphicExec clientFn serverFn model
36+
let inline isomorphicExec (clientFn: 'a -> 'b) (serverFn: 'a -> 'b) (input: 'a) =
37+
#if FABLE_COMPILER
38+
clientFn input
39+
#else
40+
serverFn input
41+
#endif
3842

3943
let isomorphicView (clientView: 'model -> ReactElement) (serverView: 'model -> ReactElement) (model: 'model) =
4044
#if FABLE_COMPILER

src/Fable.React/Fable.Helpers.React.fs

Lines changed: 30 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -767,12 +767,6 @@ type ServerElementType =
767767
let [<Literal>] private ChildrenName = "children"
768768

769769
module ServerRenderingInternal =
770-
let inline isomorphicExec (clientFn: 'a -> 'b) (serverFn: 'a -> 'b) (input: 'a) =
771-
#if FABLE_COMPILER
772-
clientFn input
773-
#else
774-
serverFn input
775-
#endif
776770

777771
#if FABLE_COMPILER
778772
let inline createServerElement (tag: obj, props: obj, children: ReactElement list, elementType: ServerElementType) =
@@ -821,14 +815,11 @@ let inline from<[<Pojo>]'P> (com: ComponentClass<'P>) (props: 'P) (children: Rea
821815
/// Instantiate a component from a type inheriting React.Component
822816
/// Example: `ofType<MyComponent,_,_> { myProps = 5 } []`
823817
let inline ofType<'T,[<Pojo>]'P,[<Pojo>]'S when 'T :> Component<'P,'S>> (props: 'P) (children: ReactElement list): ReactElement =
824-
let inline clientRender () =
825-
createElement(typedefof<'T>, props, children)
826-
827-
let inline serverRender () =
828-
createServerElement(typeof<'T>, props, children, ServerElementType.Component)
829-
830-
isomorphicExec clientRender serverRender ()
831-
818+
#if FABLE_COMPILER
819+
createElement(typedefof<'T>, props, children)
820+
#else
821+
createServerElement(typeof<'T>, props, children, ServerElementType.Component)
822+
#endif
832823

833824

834825
/// OBSOLETE: Use `ofType`
@@ -843,8 +834,11 @@ let inline com<'T,[<Pojo>]'P,[<Pojo>]'S when 'T :> Component<'P,'S>> (props: 'P)
843834
/// ofFunction Hello { name = "Maxime" } []
844835
/// ```
845836
let inline ofFunction<[<Pojo>]'P> (f: 'P -> ReactElement) (props: 'P) (children: ReactElement list): ReactElement =
846-
isomorphicExec createElement createServerElementByFn (f, props, children)
847-
837+
#if FABLE_COMPILER
838+
createElement(f, props, children)
839+
#else
840+
createServerElementByFn(f, props, children)
841+
#endif
848842

849843
/// OBSOLETE: Use `ofFunction`
850844
[<System.Obsolete("Use ofFunction")>]
@@ -915,41 +909,35 @@ let inline ofArray (els: ReactElement array): ReactElement = HTMLNode.List els :
915909

916910
/// Instantiate a DOM React element
917911
let inline domEl (tag: string) (props: IHTMLProp list) (children: ReactElement list): ReactElement =
918-
let inline clientRender (tag, props, children) =
919-
createElement(tag, keyValueList CaseRules.LowerFirst props, children)
920-
921-
let inline serverRender (tag, props, children) =
922-
createServerElement(tag, (props |> Seq.cast<IProp>), children, ServerElementType.Tag)
923-
924-
isomorphicExec clientRender serverRender (tag, props, children)
912+
#if FABLE_COMPILER
913+
createElement(tag, keyValueList CaseRules.LowerFirst props, children)
914+
#else
915+
createServerElement(tag, (props |> Seq.cast<IProp>), children, ServerElementType.Tag)
916+
#endif
925917

926918
/// Instantiate a DOM React element (void)
927919
let inline voidEl (tag: string) (props: IHTMLProp list) : ReactElement =
928-
let inline clientRender (tag, props, children) =
929-
createElement(tag, keyValueList CaseRules.LowerFirst props, children)
930-
931-
let inline serverRender (tag, props, children) =
932-
createServerElement(tag, (props |> Seq.cast<IProp>), children, ServerElementType.Tag)
933-
934-
isomorphicExec clientRender serverRender (tag, props, [])
920+
#if FABLE_COMPILER
921+
createElement(tag, keyValueList CaseRules.LowerFirst props, [])
922+
#else
923+
createServerElement(tag, (props |> Seq.cast<IProp>), [], ServerElementType.Tag)
924+
#endif
935925

936926
/// Instantiate an SVG React element
937927
let inline svgEl (tag: string) (props: IProp list) (children: ReactElement list): ReactElement =
938-
let inline clientRender (tag, props, children) =
939-
createElement(tag, keyValueList CaseRules.LowerFirst props, children)
940-
let inline serverRender (tag, props, children) =
941-
createServerElement(tag, (props |> Seq.cast<IProp>), children, ServerElementType.Tag)
942-
943-
isomorphicExec clientRender serverRender (tag, props, children)
928+
#if FABLE_COMPILER
929+
createElement(tag, keyValueList CaseRules.LowerFirst props, children)
930+
#else
931+
createServerElement(tag, (props |> Seq.cast<IProp>), children, ServerElementType.Tag)
932+
#endif
944933

945934
/// Instantiate a React fragment
946935
let inline fragment (props: IFragmentProp list) (children: ReactElement list): ReactElement =
947-
let inline clientRender () =
948-
createElement(typedefof<Fragment>, keyValueList CaseRules.LowerFirst props, children)
949-
let inline serverRender () =
950-
createServerElement(typedefof<Fragment>, (props |> Seq.cast<IProp>), children, ServerElementType.Fragment)
951-
952-
isomorphicExec clientRender serverRender ()
936+
#if FABLE_COMPILER
937+
createElement(typedefof<Fragment>, keyValueList CaseRules.LowerFirst props, children)
938+
#else
939+
createServerElement(typedefof<Fragment>, (props |> Seq.cast<IProp>), children, ServerElementType.Fragment)
940+
#endif
953941

954942
// Standard elements
955943
let inline a b c = domEl "a" b c

0 commit comments

Comments
 (0)