рд░рд┐рдПрдХреНрдЯ рдЯреАрдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рджреЗрд╢реА рдПрдЪрдПрдордЖрд░ рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИ, рдЬреЛ рдлрд╛рд╕реНрдЯ рд░рд┐рдлреНрд░реЗрд╢ рдирд╛рдордХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╣реЙрдЯ-рд▓реЛрдбрд░ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рд░рдбрд╛рд░ рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рд▓рд╛рдн рд╣реИрдВ:
рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреБрдЫ рд▓реЙрдЬрд┐рд╕реНрдЯрд┐рдХреНрд╕ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
window
рдЪрд░ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИредtry .. finally
рдмреНрд▓реЙрдХ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд╛рд╕реНрдЯ рд░реАрдлреНрд░реЗрд╢ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдХрд░рдиреА рд╣реЛрдВрдЧреАредIHMO рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рд╣рдореЗрдВ Elmish.HMR рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рд╡рд░реНрддрдорд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ HMR рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
рдЬрдм рдПрд▓реНрдорд┐рд╢ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдлреЗрд▓рд┐рдЬ рдХреЛ рдЖрд╡реЗрджрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдпрд╣ рднреА рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ Elmish.HMR рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА Elmish рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ Pure Fable.React, Pure Feliz, рджреЛрдиреЛрдВ рдХрд╛ рдорд┐рд╢реНрд░рдг рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд┐рд╕реА рднреА рд░реЗрдВрдбрд░рд░ рдХреЗ рд╕рд╛рде рд╕рд┐рд░реНрдл рд╢реБрджреНрдз Elmishред
рд╣рд╛рдБ, рдпрд╣ рдореБрдЭреЗ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рдерд╛ рдХрд┐ Elmish.Debugger
рдпрд╛ Elmish.HMR
рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╕реНрдерд╛рди рдереЗ, рдореИрдВрдиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рджреЗрдЦрд╛ рдерд╛ рдХрд┐ рд╡реЗ рд╕реАрдзреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдпреБрдЧреНрдорд┐рдд рдереЗ рдпрд╛ рдирд╣реАрдВред
рдУрд╣, рдпрд╣ Elmish.HMR
рд╣реИ рди рдХрд┐ Elmish.Debugger
рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдкрд┐рдЫрд▓рд╛ рд╕рдВрджреЗрд╢ рд╕рдВрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ред
рдирд╣реАрдВ, рдпрд╣ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реИ, Elmish.HMR
рдПрд▓реНрдорд┐рд╢ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЫрд╛рдпрд╛ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдЪрдПрдордЖрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
Program.run
Program.toNavigable
Program.withReactBatched
@MangelMaxime AFAIK Elmish.HMR
рд░рд┐рдПрдХреНрдЯ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдХреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬрдм рдЖрдк рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд░рд╛рдЬреНрдп рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЬрд▓реНрдж рд╣реА рдПрдХ рд░реЗрдкреНрд░реЛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛
@ рдЬрд╝реИрдж-рдЕрдЬрд╛рдЬ рдПрдЪрдПрдордЖрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред
рдореБрдЭреЗ рд╕реНрдерд┐рддрд┐ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред https://github.com/elmish/hmr/issues/26
рдЖрдк рдЬреЛ рд╡рд░реНрдгрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдЪрдПрдордЖрд░ рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдЪрдПрдордЖрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдХреЛрдб рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдПрд▓реНрдорд┐рд╢ рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдЖрдк рдЗрд╕реЗ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд░рд╛рдЬреНрдп рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реИ рдФрд░ рдПрд▓реНрдорд┐рд╢ред рдПрдЪрдПрдордЖрд░ рдиреЗ рдПрд▓реНрдорд┐рд╢ рдХреЛ рд╕реАрдЦрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЫрд╛рдпрд╛рдВрдХрд┐рдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдЯреЗрдЯрдлреБрд▓ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣ HMR рдХреЛ рд╕рдордЭ рд╕рдХреЗред рдЖрджреЗрд╢ рдореЗрдВ, рдЗрд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рд╕реАрдзреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬреЛ рд╕реНрдЯреЗрдЯрдлреБрд▓ рдХрдВрдкреЛрдиреЗрдВрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЕрдиреНрдпрдерд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕рд╣реА рдХреНрд░рдо рдореЗрдВ рдЦреЛрд▓рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдореИрдВ Elmish.HMR рдореЗрдВ equalsButFunctions
рдЫрд╛рдпрд╛ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛:
open Fable.React
open Elmish.HMR
рдПрдЪрдПрдордЖрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдПрдЪрдПрдордЖрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕реАрдзреЗ Fable.React
рдХреЛрдб рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╡реЗ рдХреЗрд╡рд▓ open Fable.React
рдФрд░ рдмрд╕ рдЗрддрдирд╛ рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдкрд░ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЖрдк HMR рдХреЛрдб рдХреЛ #if DEBUG ... #else ... #endif
рдХреЗ рдмреАрдЪ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдореБрдЭреЗ рдХреБрдЫ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреЛ рд╢рд╛рдпрдж рдЙрдкрдпреЛрдЧреА рд╣реЛред
рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд░реЗрдкреЛ рдпрд╣рд╛рдВ рд╣реИред
dotnet fsi build.fsx
рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдЙрдЯрдкреБрдЯ рдЬреЗрдПрд╕ src\Client\www\fablejs
. рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖ рдЬрд╛рдПрдЧрд╛
рдореЗрд░рд╛ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
``` рдЪ #
[
рдЪрд▓реЛ рдХрд╛рдЙрдВрдЯрд░ () =
рдЪрд▓реЛ (рдЧрд┐рдирддреА, рд╕реЗрдЯрдХрд╛рдЙрдВрдЯ) = React.useState(0)
рдПрдЪрдЯреАрдПрдордПрд▓.рдбрд┐рд╡ [
рдкреНрд░реЙрдк.рд╕реНрдЯрд╛рдЗрд▓ [рд╕реНрдЯрд╛рдЗрд▓.рдкреИрдбрд┐рдВрдЧ 20]
рд╕рд╣рд╛рд░рд╛ рдмрдЪреНрдЪреЗ [
рдПрдЪрдЯреАрдПрдордПрд▓.рдПрдЪ1 рдЧрд┐рдирддреА
рдПрдЪрдЯреАрдПрдордПрд▓.рдмрдЯрди [
рдкреНрд░реЙрдк.рдЯреЗрдХреНрд╕реНрдЯ "рдЗрдиреНрдХреНрд░реАрдореЗрдВрдЯ"
prop.onClick (рдордЬрд╝рд╛ _ -> рд╕реЗрдЯрдХрд╛рдЙрдВрдЯ (рдЧрд┐рдирддреА + 2))
]
]
]
It will generate js like below. Under folder `src\Client\www\fablejs\Counter.js` I can edit and trigger `parcel` to update.
I replaced old `reactElement` with `createElement` then save the Counter.js and the `fast refresh` starts to work. And it works together with elmish HMR (wow nice:)).
Alias (`reactElement as createElement`) will not work. Only `import { createElement } from 'react';` seems work.
I also found some thing related to `createElement` in react-refresh: https://github.com/facebook/react/blob/ebf158965f2b437515af0bed2b9e9af280e0ba3c/packages/react-refresh/src/ReactFreshBabelPlugin.js#L192
```js
import { Feliz_React__React_useState_Static_1505 } from "./www/fablejs/.fable/Feliz.1.16.2/React.fs.js";
import { reactApi, reactElement, mkAttr, mkStyle } from "./www/fablejs/.fable/Feliz.1.16.2/Interop.fs.js";
import { ofArray, singleton } from "./.fable/fable-library.3.0.0-nagareyama-rc-007/List.js";
import { createObj } from "./.fable/fable-library.3.0.0-nagareyama-rc-007/Util.js";
import { createElement } from 'react';
export function Counter() {
let properties, elems, xs;
const patternInput = Feliz_React__React_useState_Static_1505(0);
const setCount = patternInput[1];
const count = patternInput[0] | 0;
const xs_1 = ofArray([(properties = singleton(mkStyle("padding", 20)), mkAttr("style", createObj(properties))), (elems = [createElement("h1", createObj(singleton(["children", new Int32Array([count])]))), (xs = ofArray([mkAttr("children", "Increment"), mkAttr("onClick", (_arg1) => {
setCount(count + 10);
})]), createElement("button", createObj(xs)))], mkAttr("children", reactApi.Children.toArray(Array.from(elems))))]);
return createElement("div", createObj(xs_1));
}
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╣рдо Fast Refresh
рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ !!!
рд╣рд╛рдп рд╡рд╣рд╛рдБ @albertwoo ,
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЛ v1.17.0 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ? рдХреНрдпреЛрдВрдХрд┐ рдлрд╛рд╕реНрдЯ-рд░реАрдлреНрд░реЗрд╢ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╡реЗрдмрдкреИрдХ рдФрд░ рджреЛрд╕реНрддреЛрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдирд╡реАрдирддрдо рд╕реЗрдЯ рд╣реИред рдХреГрдкрдпрд╛ SAFE рджреЗрдЦреЗрдВред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдВ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╣рд╛рдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ reactElement
рдХреЛ createElement
рдореЗрдВ рдмрджрд▓реЗ рдмрд┐рдирд╛
рдореИрдВ рдпрд╣ рднреА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдкрд╛рд░реНрд╕рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╡рд╣ рдкрд╛рд░реНрд╕рд▓ рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ? рдирд╡реАрдирддрдо 2.0-рдмреАрдЯрд╛ рдлрд╛рд╕реНрдЯ-рд░реАрдлреНрд░реЗрд╢ рдХреЛ рдареАрдХ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд░рд╛рдд рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкрд╛рд░реНрд╕рд▓ рд░реЗрдкреЛ рдкрд░ рдпрд╣ рдЪрд░реНрдЪрд╛ рджреЗрдЦреЗрдВ
рд▓реЗрдХрд┐рди SAFE.React @pmmmwh/react-refresh-webpack-plugin
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░реЗрдкреЛ рд╕реЗ рддреЗрдЬрд╝ рд░реАрдлреНрд░реЗрд╢ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рд╣реИ? рд╢рд╛рдпрдж рдореИрдВ рдЧрд▓рдд рд╣реВрдБред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ reactElement
рдХреЛ createElement
рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рд╕рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реИрд▓реА рдХреЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрд░реАрдм рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ?
рдореИрдВрдиреЗ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЛ 1.17.0.0.1 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдФрд░ рдореИрдВ рдкрд╛рд░реНрд╕рд▓ 2.0.0-nightly.447
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗред
рд▓реЗрдХрд┐рди SAFE.React @pmmmwh/react-refresh-webpack-plugin рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд░реЗрдкреЛ рд╕реЗ рддреЗрдЬрд╝ рд░реАрдлреНрд░реЗрд╢ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рд╣реИ? рд╢рд╛рдпрдж рдореИрдВ рдЧрд▓рдд рд╣реВрдБред
рд╡реЗрдмрдкреИрдХ рдкреНрд▓рдЧрдЗрди fast-refresh
рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╣рдХрд░реНрдореА рдирд┐рд░реНрднрд░рддрд╛ v0.9.0 рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ-рд▓реЙрдХ-рдЬреЗрд╕рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╛рд╕реНрдЯ-рд░реАрдлреНрд░реЗрд╢ рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдпрд╣ рдирд╡реАрдирддрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ?
рдХреНрдпрд╛ рдЬреЗрдирд░реЗрдЯ рдХреЛрдб рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реИрд▓реА рдХреЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрд░реАрдм рдмрдирд╛рдирд╛ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИ?
рдпрд╣ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, reactElement
рдХреЗрд╡рд▓ createElement
рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдлрд╛рд╕реНрдЯ-рд░реАрдлреНрд░реЗрд╢ рдкреНрд▓рдЧрдЗрди рджреЛрдмрд╛рд░рд╛ рдЖрдпрд╛рдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рддреЛ рдЙрдиреНрд╣реЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛)ред рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ
рдореИрдВрдиреЗ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЛ 1.17.0.0.1 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдФрд░ рдореИрдВ 2.0.0-nightly.447 рдкрд╛рд░реНрд╕рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗред
рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рдерд╛ рдХрд┐ рдпрд╣ рд░рд╛рдд рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред 443 рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╛рд░реНрд╕рд▓ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рд╕рдордп рдХрд┐рддрдирд╛ рдЕрд╕реНрдерд┐рд░ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реЗрдмрдкреИрдХ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
рдореИрдВ react-refresh
рдХреЗ рд▓рд┐рдП рднреА 0.9.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВ рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрдм рдкрд╛рд░реНрд╕рд▓ 2 рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
@albertwoo рдХреНрдпрд╛ рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ?
./www/fablejs/.fable/Feliz.1.17.2/Interop.fs
reactElement
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рдмрджрд▓реЗрдВ
[<RequireQualifiedAccess>]
module Interop =
let reactElement (name: string) (props: 'a) : ReactElement = import "createElement" "react"
рдкреНрд░рддрд┐
[<RequireQualifiedAccess>]
module Interop =
let inline reactElement (name: string) (props: 'a) : ReactElement = import "createElement" "react"
рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ
inline
рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛
рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдпрд╛рдд рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрдЬрд╛рдп рд╕реАрдзреЗ createElement
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ ./www/fablejs/.fable/Feliz.1.17.2/Interop.fs
рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд▓реНрдкрд┐рдд рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдЖрдЧреЗ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдПрдХ рдФрд░ рдЕрдЬреАрдм рдЪреАрдЬ рдЬреЛ рдореИрдВрдиреЗ рджреЗрдЦреА рд╣реИ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдлреЗрд▓рд┐рдЬ рдирдЧреЗрдЯ рдкреИрдХрдХреЗрдЬ рдХреЗ рдлреЛрд▓реНрдбрд░ fable
рдХреЗ рддрд╣рдд рд╣рд░ .fs
рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП .fs.js
рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдореЗрдВ рд╡реЗ рдирд╣реАрдВ рдереЗред
рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдореЗрдВ рд╡реЗ рдирд╣реАрдВ рдереЗред
рдпрд╣ рд╕рд╣реА рд╣реИ, Fable рд╕рдВрдХреБрд▓ рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдареАрдХ рдХрд░реЗрдВ, рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрднреА рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ
рддреЛ рдпрд╣ рд╣реЛрдирд╛ рд╣реИ?
рддреЛ рдпрд╣ рд╣реЛрдирд╛ рд╣реИ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ .fs рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдХ рд╕рдорд╛рди .fs.js рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреЛ Fable.React рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЗрд╡рд▓ рд╡рд╣рд╛рдВ рд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЙрдкрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ: рдореБрд╕реНрдХрд╛рди:
рдареАрдХред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХ рдХреЛ рдХреЗрд╡рд▓ .fs
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдирдЧреЗрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рд╛рдВ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓реЗрдЦрдХ рдХреЗрд╡рд▓ рдПрдл # рд╕реНрд░реЛрдд рдХреЛрдб рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдлреИрдмрд▓ рдЙрдиреНрд╣реЗрдВ рдЬреЗрдПрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдл # рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд░рдЦрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ fable
рдЙрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рддрд╣рдд рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдЧрд╛? рдореЗрд░реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдирдЧреЗрдЯ рдХреИрд╢ рдлреЛрд▓реНрдбрд░ рдХреЗ рддрд╣рдд рдлреЗрд▓рд┐рдЬ рдкреИрдХреЗрдЬ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реЗ .fs.js
рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬреЛ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдФрд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ Feliz.fsproj рдиреЗ рд╕рднреА .js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП *.fs.js
:
https://github.com/Zaid-Ajaj/Feliz/blob/30544a5757517f090cac627be264472db2ea9afd/Feliz/Feliz.fsproj#L22
рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдпрд╣ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
@albertwoo рдлрд╝реЗрд▓рд┐рдЬрд╝ v1.18 (рдЕрдм v1.19) рдХреЗ рдмрд╛рдж рд╕реЗ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ createElement
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдордзреНрдпрд╡рд░реНрддреА reactElement
рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рдмреАрдЪ рдореЗрдВред рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ?
@ рдЬреИрдж-рдЕрдЬрд╛рдЬ рдиреЗ рдЕрднреА рдХреЛрд╢рд┐рд╢ рдХреА, рдпрд╣ рд╕рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рдореИрдВ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рдпреЛрдЧ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлрд╛рд╕реНрдЯ рд░реАрдлреНрд░реЗрд╢ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдореИрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдХрд▓ рд╢рд╛рдо рдХреЛ рдмрд┐рддрд╛рдпрд╛ рдерд╛ред
рдлрд╛рд╕реНрдЯ рд░рд┐рдлреНрд░реЗрд╢ рдХрд╛ рд╕рдорд░реНрдерди рдЬреНрдпрд╛рджрд╛рддрд░ рдмрдВрдбрд▓рд░ рдЯреВрд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдПрд▓реНрдорд┐рд╢ рд╕реНрдЯрд┐рд▓ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдХрдо рд╕реЗ рдХрдо 2 рдлрд╝рдВрдХреНрд╢рди update
рдФрд░ init
рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд▓реНрдкрд┐рдд рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм/рдкрд░рд┐рднрд╛рд╖рд╛ред рдореИрдВрдиреЗ рджреГрд╢реНрдп рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рд╣реИ: рдкрд▓рдХ:
рджреВрд╕рд░реА рдУрд░ рд╕реНрдиреЛрдкреИрдХ рдпрд╣ рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдХреНрдпрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ HMR рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ fast-refresh/runtime
рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рднреА рдХрд┐рдП рдФрд░ рдпрд╣ рдКрдкрд░ рдореЗрд░реА рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрджрд┐ рдЖрдк рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд╛рд╕реНрдЯ рд░реАрдлреНрд░реЗрд╢ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди/рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рдЬреА рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рд╕реНрдиреЛрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬреИрд╕рд╛ рдЪрд╛рд╣реЗрдВ рд╡реИрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдиреЛрдкреИрдХ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдХреНрд╕рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдореЗрд░реА рдбрд┐рд╕реНрдХ рдкрд░ рдореМрдЬреВрдж рдЪреАрдЬрд╝реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрддреА рд╣реИред рдФрд░ рдпрд╣ рднреА рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрднреА рддрдХ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдордЬрдмреВрдд рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдХреНрд╕рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ рдпрд╛ рд╕реНрдиреЛрдкреИрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХрддрд╛/рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реВрдВред
рдЕрдкрдирд╛ рдкрд░реАрдХреНрд╖рдг рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд▓рдЧрдЗрди рдХреЛ рдлреЛрд░реНрдХ рдХрд░ рджреВрдВрдЧрд╛ рдФрд░ "рдирд┐рд░реНрдпрд╛рдд рдЬрд╛рдВрдЪ" рдХреЛ рд╣рдЯрд╛ рджреВрдВрдЧрд╛ рдФрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
@ рдЬреИрдж-рдЕрдЬрд╛рдЬ рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рд╣реИрдВ?
@Shmew рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ @MangelMaxime рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдлрд╝реЗрд▓рд┐рдЬрд╝ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓ рд╕рд╛рдмрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рди рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рд╕реЗ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдЗрд╕реЗ рдЕрднреА рддрдХ рдмрдВрдж рди рдХрд░реЗрдВ ЁЯЩП
рдХреЗрд╡рд▓ рдЖрдкрдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рдкреБрд░рд╛рдиреЗ Elmish.HMR
NuGet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдирдХ Elmish
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдореБрдЭреЗ рдХрдИ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдпрд╣ рдмрд╣реБрдд Feliz.UseElmish
рдкрд╣рд▓реЗ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Elmish
рдирд╣реАрдВ рд╣реИ ...
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ fast-refresh
рдХреЗрд╡рд▓ рдЙрди рдШрдЯрдХреЛрдВ рдХреЛ рдкреБрдирдГ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП dispatch
рдЙрджрд╛рд╣рд░рдг рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрджреНрдпрддрди/рдкреНрд░рдЪрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИ рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИред
рдлрд┐рд░ рд╕реЗ, рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг 2 рдорд╣реАрдиреЗ рдкреБрд░рд╛рдиреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдареАрдХ рд╕реЗ рдпрд╛рдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рдереАред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ "рд╢рд╛рд╕реНрддреНрд░реАрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдирд╛ рдЖрд╡реЗрджрди рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди "рдорд╛рдирдХ" рдПрд▓реНрдорд┐рд╢ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдлреЗрд▓рд┐рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдХреНрдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рддрд╛рдЬрд╝рд╛-рд╡реЗрдмрдкреИрдХ-рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдирд┐рд░реНрдпрд╛рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП ReactComponentAttribute
рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Fable рдХреЛ рдмрддрд╛рдХрд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛рдиреА Counter.fs
Counter.fs.js
рдФрд░ CounterRC.fs.js
рдпрд╛ рдХреБрдЫ рдЙрдкрдпреБрдХреНрдд рдирд╛рдо рдмрди рдЬрд╛рддрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рдпреЛрдЧ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлрд╛рд╕реНрдЯ рд░реАрдлреНрд░реЗрд╢ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдореИрдВ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдХрд▓ рд╢рд╛рдо рдХреЛ рдмрд┐рддрд╛рдпрд╛ рдерд╛ред
рдлрд╛рд╕реНрдЯ рд░рд┐рдлреНрд░реЗрд╢ рдХрд╛ рд╕рдорд░реНрдерди рдЬреНрдпрд╛рджрд╛рддрд░ рдмрдВрдбрд▓рд░ рдЯреВрд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдПрд▓реНрдорд┐рд╢ рд╕реНрдЯрд┐рд▓ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдХрдо рд╕реЗ рдХрдо 2 рдлрд╝рдВрдХреНрд╢рди
update
рдФрд░init
рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд▓реНрдкрд┐рдд рдЖрджрд┐ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдкреНрд░рдХрд╛рд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм/рдкрд░рд┐рднрд╛рд╖рд╛ред рдореИрдВрдиреЗ рджреГрд╢реНрдп рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХреА рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рд╣реИ: рдкрд▓рдХ:рджреВрд╕рд░реА рдУрд░ рд╕реНрдиреЛрдкреИрдХ рдпрд╣ рдЬрд╛рдБрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдХреНрдпрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ HMR рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ
fast-refresh/runtime
рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рднреА рдХрд┐рдП рдФрд░ рдпрд╣ рдКрдкрд░ рдореЗрд░реА рдмрд╛рдд рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИредрд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрджрд┐ рдЖрдк рд╡реЗрдмрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд╛рд╕реНрдЯ рд░реАрдлреНрд░реЗрд╢ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рдлрд╝рдВрдХреНрд╢рди/рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рдЬреА рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рд╕реНрдиреЛрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЬреИрд╕рд╛ рдЪрд╛рд╣реЗрдВ рд╡реИрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдиреЛрдкреИрдХ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдЕрдиреБрднрд╡ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдХреНрд╕рд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдореЗрд░реА рдбрд┐рд╕реНрдХ рдкрд░ рдореМрдЬреВрдж рдЪреАрдЬрд╝реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрддреА рд╣реИред рдФрд░ рдпрд╣ рднреА рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрднреА рддрдХ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдордЬрдмреВрдд рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдХреНрд╕рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реВрдВ рдпрд╛ рд╕реНрдиреЛрдкреИрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХрддрд╛/рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реВрдВред
рдЕрдкрдирд╛ рдкрд░реАрдХреНрд╖рдг рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд▓рдЧрдЗрди рдХреЛ рдлреЛрд░реНрдХ рдХрд░ рджреВрдВрдЧрд╛ рдФрд░ "рдирд┐рд░реНрдпрд╛рдд рдЬрд╛рдВрдЪ" рдХреЛ рд╣рдЯрд╛ рджреВрдВрдЧрд╛ рдФрд░ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред