рд╣рдореЗрдВ рдЖрдпрд╛рддрд┐рдд рдШрдЯрдХреЛрдВ рдХреЛ рдореЙрдбрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреЙрд▓ рд╕рд╛рдЗрдЯ рдореЗрдВ рд╕рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрдиред рдЗрд╕рд▓рд┐рдП рд╣рдо рдпрд╛ рддреЛ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХреЛрдВ рдпрд╛ (рдЕрдирд╛рдо) рд░рд┐рдХреЙрд░реНрдб рдкреНрд░реЙрдкреНрд╕ рдХрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
type ExternalModule =
[<ImportedReactComponent("AnotherComponent", from="external-module")>]
static member Component(name: string, flag: bool): ReactElement = jsNative
[<ImportedReactComponent("AnotherComponent", from="external-module")>]
let AnotherComponent (props: {| foo: int; bar: string |}): ReactElement = jsNative
рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХрд┐ рдореИрдВ рдирд╣реАрдВ рднреВрд▓рддрд╛, рдореИрдВ рдЦреБрдж рдПрдХ рдкреАрдЖрд░ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдУрд╣, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ ЁЯШН
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ?
// import { AnotherComponent } from "external-module";
[<ReactComponent(import="AnotherComponent", from="external-module")>]
let Component(name: string, flag: bool): ReactElement = jsNative
// import Component from "external-module"
[<ReactComponent(importDefaultFrom="external-module")>]
let Component(name: string, flag: bool): ReactElement = jsNative
рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпрд╣ рдмреЗрд╣рддрд░ рд▓рдЧрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?
рдпрд╣ рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рдореЗрд░рд╛ рднрд╡рд┐рд╖реНрдп рдореИрдВ рд╕рд┐рд░реНрдл рдореБрдЭреЗ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рд╣рдо рдЖрд░рдИрдкреАрдПрд▓ рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП System.Activator
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ Fable рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рд╛рдердорд┐рдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдирд┐рд░реНрдорд╛рддрд╛ред рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХрдИ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╡реИрд╕реЗ рднреА, рдХрдИ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╕реЗ рдмрдЪрдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╕рдордп рдЖрдиреЗ рдкрд░ рд╣рдо рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ
рдпрджрд┐ рдЖрдк рд▓реЛрдЧ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛: [<ImportReactComponent>]
ред
рдпрд╣ рдЗрд╕реЗ JS рдЗрдВрдЯрд░рдСрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ (рдЬреИрд╕реЗ [<ImportDefault>]
) рдХреЗ рдЕрдиреБрд░реВрдк рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛ред
@VitalyBrusentsev рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЙрд╕реА [<ReactComponent>]
рдЕрдВрджрд░ рдирдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдБрдЧрд╛
@alfonsogarciacaro рдореИрдВ рдЗрд╕реЗ рдЕрднреА
@alfonsogarciacaro рдкреНрд░рдХрд╛рд╢рд┐рдд рдлрд╝реЗрд▓рд┐рдЬрд╝ v1.25 рдЬреЛ рдЖрдкрдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП
[<ReactComponent(import="Hello", from="external-module")>]
let HelloWrapper (name: string) (children: ReactElement []) = Html.none
рдХрд╣рд╛рдБ рдХреЗ рд╢рд░реАрд░ HelloWrapper
рд░рд┐рдЯрд░реНрди null
рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдШреЛрд╖рдгрд╛ рдХреА рдФрд░ рдХреЙрд▓-рд╕рд╛рдЗрдЯ рдкрд░ рдЫреБрдЯрдХрд╛рд░рд╛ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЖрдпрд╛рддрд┐рдд рд╕рдорд╛рд░реЛрд╣ рдмрдЬрд╛рдп рд▓рд╛рдЧреВ рдорд╛рдирдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@alfonsogarciacaro рдкреНрд░рдХрд╛рд╢рд┐рдд рдлрд╝реЗрд▓рд┐рдЬрд╝ v1.25 рдЬреЛ рдЖрдкрдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП
рдХрд╣рд╛рдБ рдХреЗ рд╢рд░реАрд░
HelloWrapper
рд░рд┐рдЯрд░реНрдиnull
рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдШреЛрд╖рдгрд╛ рдХреА рдФрд░ рдХреЙрд▓-рд╕рд╛рдЗрдЯ рдкрд░ рдЫреБрдЯрдХрд╛рд░рд╛ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЖрдпрд╛рддрд┐рдд рд╕рдорд╛рд░реЛрд╣ рдмрдЬрд╛рдп рд▓рд╛рдЧреВ рдорд╛рдирдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ