ããã¯çŽ æŽãããç§èŠã«èŠããŸãã
ããã¯ã Material-UIãªã©ã®ãµãŒãããŒãã£ã®ãã®ã«æ¡åŒµããã®ã¯ç°¡åã§ããïŒ
ãããè¡ãæ¹æ³ã«ã€ããŠã®ããçš®ã®ã¬ã€ããããã°çŽ æŽãããã§ãããã :)
ããã¯çŽ æŽãããç§èŠã«èŠããŸãã
ããããšãïŒ ãããããé¡ãããŸãïŒsmileïŒ
ããã¯ãMaterial-UIãªã©ã®ãµãŒãããŒãã£ã®ãã®ã«æ¡åŒµããã®ã¯ç°¡åã§ããïŒ
確ãã«ãå·®å¥åãããå ±çšäœã䜿çšããŠããªããããã¢ãããŒãã¯å°ãç°ãªããŸãã ç§ã¯æéãèš±ãã°äœããæžã蟌ãããšããŸãããåºæ¬çã«2ã€ã®éžæè¢ããããšããèãã§ãã
prop
éçåãããå€ãã®é¢æ°ã§æ¡åŒµããŸãMui
ïŒã«åºæã®åæ§ã®prop
éçã¿ã€ããäœæããŸãã prop
ãMui
ã§ãšã€ãªã¢ã¹ãã Mui
ãMuiåºæã®ïŒãªãŒããŒããŒããããïŒããããã£ãšé¢æ°ã§æ¡åŒµããããšãã§ããŸããæ¡åŒµã¯æ¬¡ã®ããã«ç°¡åã§ãã
type prop with
static member hello (value: string) = Interop.mkAttr "hello" value
ãããã©ã€ãã©ãªã®ãæçµåœ¢æ ãã§ãããã©ããããããŠãããæ¡åŒµããæ¹æ³ã¯ãŸã æ€èšäžã§ããæåã«ãµãŒãããŒãã£ã®ã©ã€ãã©ãªãæ§ç¯ããŠè©ŠããŠã¿ãŠãã©ã®ããã«ãªããã確èªããããšæããŸãã
ããããšãïŒ ç§ã¯ãã§ã«ãMUIã®ãã¹ãããAPIã®ã»ãã®äžéšã§ããããã©ã®ããã«æ©èœãããã確èªããããã«é 調ã«é²ãã§ããŸãã ããããé±æ«/çµããã®ãã€ãå ±æããã§ããããç§ãè»éã«ä¹ã£ãŠããããã§ãªã¹ã®ç²Ÿç¥ã«åŸã£ãŠãããã©ããã確èªããããã ãã«ãããèŠãããšãã§ããã°çŽ æŽãããã§ãããã ãããŸã§ã®ãšããæåã®ããã§ãïŒ
ãã ããæ¢åã®prop
ã¿ã€ãã¯æ¡åŒµããŠããŸããã å¥ã®åå空éïŒ Feliz.MaterialUI
ïŒã§å¥ã®prop
ã¿ã€ããå®çŸ©ããŸããã äžèŠçŽ æŽãããäœåã§ãã ãã¡ããã Feliz
ãšFeliz.MaterialUI
ã®äž¡æ¹ãéããšãäžèŽãããã¹ãŠã®ã¿ã€ãã®ãã¹ãŠã®ã¡ã³ããŒã«ã¢ã¯ã»ã¹ã§ããŸãã
Html
ã«å¯Ÿå¿ããå®éã®ã³ã³ããŒãã³ããå«ãã¿ã€ãMui
ããããŸãã
ïŒçŸåšãïŒ13ã§èª¬æããããã«ãã³ã³ããŒãã³ãåºæã®å°éå
·ãprop
ã®åå¥ã®ãµãã¢ãžã¥ãŒã«ã«é
眮ããŠããŸããïŒ
Felizã§èããããæ¹åç¹ã¯ã string
ã§ã¯ãªãReactElementType
$ãåãå
¥ããreactElement
ãšcreateElement
ãçšæããããšã§ãïŒç§ã¯æããŸãïŒã createElement (importDefault "@material-ui/core/Button")
ãåŒã³åºãããšãã§ããããã«ããŸãã ç§ã¯çŸåšãããã2ã€ã®ãã«ããŒãèªåã§äœæããŸããã
ã¡ãªã¿ã«ãã¡ã³ããŒå
šå¡ãinline
ã§ããå¿
èŠããããŸããïŒ é·æ/çæã¯äœã§ããïŒ äžèšã®inline
ã䜿çšããŠããªãããšã«æ°ä»ããŸããããFelizã®ãã¹ãŠãinline
ã§ãã
ããããšãïŒ ç§ã¯ãã§ã«ãMUIã®ãã¹ãããAPIã®ã»ãã®äžéšã§ããããã©ã®ããã«æ©èœãããã確èªããããã«é 調ã«é²ãã§ããŸãã ããããé±æ«/çµããã®ãã€ãå ±æããã§ããããç§ãè»éã«ä¹ã£ãŠããããã§ãªã¹ã®ç²Ÿç¥ã«åŸã£ãŠãããã©ããã確èªããããã ãã«ãããèŠãããšãã§ããã°çŽ æŽãããã§ãããã ãããŸã§ã®ãšããæåã®ããã§ãïŒ
ãããïŒ ãããããã°ãã²ã芧ãã ããã
ãã ããæ¢åã®ããããã¿ã€ãã¯æ¡åŒµããŠããŸããã å¥ã®åå空éïŒFeliz.MaterialUIïŒã§å¥ã®propã¿ã€ããå®çŸ©ããŸããã äžèŠçŽ æŽãããäœåã§ãã ãã¡ãããFelizãšFeliz.MaterialUIã®äž¡æ¹ãéããšãäžèŽãããã¹ãŠã®ã¿ã€ãã®ãã¹ãŠã®ã¡ã³ããŒã«ã¢ã¯ã»ã¹ã§ããŸãã
Htmlã«å¯Ÿå¿ããå®éã®ã³ã³ããŒãã³ããå«ãã¿ã€ãMuiããããŸãã
ããã¯ç§ãã ã€ã®ããã«ããããšã§ã
ïŒçŸåšãïŒ13ã§èª¬æããããã«ãã³ã³ããŒãã³ãåºæã®å°éå ·ãå°éå ·ã®åå¥ã®ãµãã¢ãžã¥ãŒã«ã«é 眮ããŠããŸããïŒ
ããªããæã£ãŠãããªãã·ã§ã³ã®æ°ã®ããã«ããã¯Muiã«ãšã£ãŠçã«ããªã£ãŠããŸã
Felizã§èããããæ¹åç¹ã¯ãæååã§ã¯ãªãReactElementTypeãåãå ¥ããreactElementãšcreateElementãçšæããããšã§ãïŒç§ã¯æããŸãïŒã createElementïŒimportDefault "@ Material-ui / core / Button"ïŒãåŒã³åºãããšãã§ããããã«ããŸãã ç§ã¯çŸåšãããã2ã€ã®ãã«ããŒãèªåã§äœæããŸããã
Interop
ã¢ãžã¥ãŒã«ã§äœ¿çšããŠããã¡ã³ããŒã確èªããŠããŸããã©ã€ãã©ãªã§äœ¿çšããŠãããã®ããã¹ãŠå
¬éããŸããããå®å®çãªãªãŒã¹ã®ããã«åæ€èšãããŸãã
ã¡ãªã¿ã«ãã¡ã³ããŒå šå¡ãã€ã³ã©ã€ã³ã§ããå¿ èŠããããŸããïŒ é·æ/çæã¯äœã§ããïŒ äžèšã§ã€ã³ã©ã€ã³ã䜿çšããŠããªãã£ãããã§ãããFelizã®ãã¹ãŠãã€ã³ã©ã€ã³ã§ãã
äžèšã®æ¡åŒµã¡ã³ããŒãã€ã³ã©ã€ã³åããå¿ èŠããããŸããïŒ
çµéšåã§ã¯ãããããã£ã®å€ãstring / int / bool / enumã®ããã«ããªããã£ãã§ããå Žåã¯ããããã£ãã€ã³ã©ã€ã³åããŸãããããããã£ãå ¥åã«åºã¥ããŠå€ãèšç®ããå Žåã¯ããŠãŒã¶ãŒãæ¯åã€ã³ã©ã€ã³åããªãæ¹ãããã§ããããã€ã³ã©ã€ã³é¢æ°ãåŒã³åºããšãé¢æ°æ¬äœå šäœããã®åŒã³åºãå Žæã«ã€ã³ã©ã€ã³åãããããããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³å šäœã§åãé¢æ°ã10å䜿çšãããšãé¢æ°æ¬äœã¯1åå®çŸ©ãããŠ10ååç §ãããã®ã§ã¯ãªããã€ã³ã©ã€ã³ã§10åã³ã³ãã€ã«ãããŸãã
çµéšåã§ã¯ãããããã£ã®å€ãstring / int / bool / enumã®ããã«ããªããã£ãã§ããå Žåã¯ããããã£ãã€ã³ã©ã€ã³åããŸãããããããã£ãå ¥åã«åºã¥ããŠå€ãèšç®ããå Žåã¯ããŠãŒã¶ãŒãæ¯åã€ã³ã©ã€ã³åããªãæ¹ãããã§ããããã€ã³ã©ã€ã³é¢æ°ãåŒã³åºããšãé¢æ°æ¬äœå šäœããã®åŒã³åºãå Žæã«ã€ã³ã©ã€ã³åãããããããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³å šäœã§åãé¢æ°ã10å䜿çšãããšãé¢æ°æ¬äœã¯1åå®çŸ©ãããŠ10ååç §ãããã®ã§ã¯ãªããã€ã³ã©ã€ã³ã§10åã³ã³ãã€ã«ãããŸãã
ç¥ã£ãŠãããšããïŒ ãããïŒå¯è©±ã®æèã§ã¯ïŒãªãããããã€ã³ã©ã€ã³ãªã®ãïŒ ãåçŽãªãé¢æ°/ã¡ãœããæ¬äœã®å©ç¹ã¯äœã§ããïŒ
[<Inject>] ITypeResolver<'t>
ã䜿çšã§ããŸãïŒé«åºŠã«å°éåãããã©ã€ãã©ãªã®ã¿ããã®æ©èœã䜿çšããŸããFable.SimpleJson/ Thoth.Jsonãåç
§ããŠãã ããïŒããã«ã¯ããããã¯ã·ã§ã³ãã³ãã«ãäœæãããšãã«ãããªãŒã·ã§ã€ã¯ãå®è¡ããæªäœ¿çšã®æ©èœãåé€ãããšæããŸãã ã€ã³ã©ã€ã³åã¯ãããæã¡è² ãããŸãã
@ Luiz-Monadã§ã¯ãçæ³çã«ã¯ãFelizã®äœãã€ã³ã©ã€ã³åãã¹ãã§ã¯ãªããšèšã£ãŠããŸããïŒ ãã³ãã«ãµã€ãºã®çç±ã«ãããã®ã€ã³ã©ã€ã³åã¯éå¹æã§ããïŒ
@ Luiz-ã¢ããããªããèšã£ãŠããããšã¯çŽ æŽãããã§ãããïŒ å°ãªããšãã³ã³ãã€ã«ããã®ããã«æ©èœããå Žåã REPLã§è©Šãããšãã§ããäŸã次ã«ç€ºããŸãã
module App
type prop =
// does useless stuff
static member f() =
[ 1 .. 100 ]
|> List.map (fun x -> x * 20)
|> List.collect (fun n -> [n; n])
|> List.fold (+) 0
// does useless stuff
static member inline k() =
[ 1 .. 100 ]
|> List.map (fun x -> x * 20)
|> List.collect (fun n -> [n; n])
|> List.fold (+) 0
static member g() = 1
let value = prop.g()
printfn "%d" value
prop
ã«å«ãŸããå ŽæïŒ
f()
ã«ã¯é¢æ°æ¬äœãå«ãŸããŠããŸã->ã€ã³ã©ã€ã³åãããŠãããã䜿çšãããŠããŸããk()
ã«ã¯é¢æ°æ¬äœãå«ãŸããŠããŸã->ã€ã³ã©ã€ã³åãããŠããŸãã䜿çšãããŠããŸããg()
ã«ã¯é¢æ°ãå«ãŸããŠããŸã->ã€ã³ã©ã€ã³ã§ã¯ãªã䜿çšãããŠããŸãf()
ãšg()
ã®äž¡æ¹ãã³ã³ãã€ã«ãããªããšæããããããŸããããããã§ã¯ãããŸããã f()
ïŒã€ã³ã©ã€ã³åãããŠãããã䜿çšãããŠããŸããïŒã¯ãšã«ããã³ã³ãã€ã«ãããŸããã k()
ïŒã€ã³ã©ã€ã³åãæªäœ¿çšïŒã¯ã³ã³ãã€ã«æžã¿ãã³ãã«ã«å«ãŸããŸãã
import { fold, collect, map, ofSeq, ofArray } from "fable-library/List.js";
import { type } from "fable-library/Reflection.js";
import { rangeNumber } from "fable-library/Seq.js";
import { toConsole, printf } from "fable-library/String.js";
import { declare } from "fable-library/Types.js";
export const prop = declare(function App_prop() {});
export function prop$reflection() {
return type("App.prop");
}
export function prop$$$f() {
return fold(function folder(x$$1, y) {
return x$$1 + y;
}, 0, collect(function mapping$$1(n) {
return ofArray([n, n]);
}, map(function mapping(x) {
return x * 20;
}, ofSeq(rangeNumber(1, 1, 100)))));
}
export function prop$$$g() {
return 1;
}
export const value = prop$$$g();
toConsole(printf("%d"))(value);
ããã¯ç¢ºãã«æ©èœããŸããããããè¡ãã«ã¯webpack
ãæ§æããå¿
èŠããããŸããããã¯ãããªãŒã·ã§ãŒãã³ã°èªäœãå¯è©±ã§ã¯ãªããããREPLã§ã¯æ©èœããªãããã§ãã
å
/// Library.fs
module Library
type prop =
// does useless stuff
static member f() =
[ 1 .. 100 ]
|> List.map (fun x -> x * 20)
|> List.collect (fun n -> [n; n])
|> List.fold (+) 0
// does useless stuff
static member inline k() =
[ 1 .. 100 ]
|> List.map (fun x -> x * 20)
|> List.collect (fun n -> [n; n])
|> List.fold (+) 0
type AppMain =
static member g() = 1
//// App.fs
module App
let value = Library.AppMain.g ()
printfn "%d" value
åŸ
declare(function Library_prop() {
// see its empty, this weren't removed too because of `keep_classnames: true, keep_fnames: true ` in the terser plugin
});
declare(function Library_AppMain() {
});
!function toConsole(arg) {
return arg.cont(function (x) {
console.log(x)
})
}(printf('%d')) (1),
__webpack_require__.d(__webpack_exports__, 'value', function () {
return 1
})
ãŸãããã¹ãã«ã¯æ³šæãå¿ èŠã§ãããšã³ããªãã¡ã€ã«ã¯ãé¢æ°ãåé€ãããªããšããç¹ã§ç¹å¥ãªãã®ã§ãã ïŒéçã¯ã©ã¹ã®åæåãšé¢ä¿ããããšæããŸããã¢ãžã¥ãŒã«ã«å¯äœçšãäžããã«ã¯ãéçåæåã³ã³ã¹ãã©ã¯ã¿ãŒãåŒã³åºãå¿ èŠããããŸãïŒ
ãã®ãã¹ãçšã«äœæãããã®ãªããžããªãåç §ããŠãã ããhttps://github.com/Luiz-Monad/test-tree-shaking
ãµã³ãã«ã¬ããã©ããããããšãïŒ ç§ã¯ééããªããããããã«èª¿æ»ããŠãã€ã³ã©ã€ã³åãå®éã«ãã§ãªã¹ã®ã³ã³ããã¹ãã§äœãæçšãªããšãããŠããã®ãã©ããã確èªããŸã
ç§ã¯ééããªããããããã«èª¿æ»ããŠãã€ã³ã©ã€ã³åãå®éã«ãã§ãªã¹ã®ã³ã³ããã¹ãã§äœãæçšãªããšãããŠããã®ãã©ããã確èªããŸã
ãã£ããããããªããèŠã€ãããã®ãèãã®ã楜ãã¿ã«ããŠããŸã:)
ãããïŒ ãããããã°ãã²ã芧ãã ããã
cmeeren / fable-elmish-electron-material-ui-demoã®feliz
ãã©ã³ãããã§ãã¯ããŠãã ããã
ã»ãšãã©ã®ã³ãŒãã¯ãïŒHTMLïŒAPIããã¥ã¡ã³ãã«åºã¥ããŠèªåçæãããŸãã ãžã§ãã¬ãŒã¿ãŒãããžã§ã¯ãïŒéããŠããããŒã§ãããä»äºã¯çµãããŸãïŒãšå®éã®ãã€ã³ãã£ã³ã°çšã®ãããžã§ã¯ãããããŸãã ã¬ã³ãã©ãŒãããžã§ã¯ãã§ã¯ã App.fs
ã®ã¿ãæ°ããFelizã¹ã¿ã€ã«ã®ãã€ã³ãã£ã³ã°ã䜿çšããããã«å€æãããŠããŸãã
æ°ã«ãªã£ããã芧ã«ãªãããææ³ããäžæãªç¹ãããããŸããããç¥ãããã ããã
@cmeerenã¯ãçŸåšã®API IMHOãããéåžžã«èŠæ ãããããã¯ããã«åªããŠããŸãããããã§ãå°ãèªã¿ã«ããã§ãããããã¯ã©ã€ãã©ãªèªäœã®æ§è³ªã§ããã粟éããŠããå¿ èŠã®ããéåžžã«ç¹æ®ãªéšåããããããããŸãã æ¹åã§ããéšåããããšæããŸãããã®äŸãèŠãŠãã ããã
Mui.appBar [
prop.className c.appBar
prop.appBar.position.fixed'
prop.children [
Mui.toolbar [
prop.children [
Mui.typography [
prop.typography.variant.h6
prop.typography.color.inherit'
prop.text (pageTitle model.Page)
]
]
]
]
]
ãã®ã¹ããããã®ç§ã®å人çãªå®ç§ãªããŒãžã§ã³ã¯ãããã次ã®ããã«å€æããããšã§ãã
Mui.appBar [
AppBar.className c.appBar
AppBar.position.fixed'
AppBar.children [
Mui.toolbar [
Toolbar.children [
Mui.typography [
Typography.variant.h6
Typography.color.inherit'
Typygraphy.text (pageTitle model.Page)
]
]
]
]
]
ãã®ããã«ãMuiãããããã¹ã«ãŒãããã ãã§ãMuièŠçŽ ãç°¡åã«èŠã€ããããšãã§ããŸããèŠçŽ ïŒ appBar
ïŒãèŠã€ããããã¢ãžã¥ãŒã«åïŒ AppBar
ïŒãããããã¹ã«ãŒãã§ããŸããããããã£ãªã©ãå®çŸ©ãã
ãã¶ã
AppBar
ãå°æåã®ãŸãŸã«ããŠãã ãã
ããªãã¯ãã®èããç解ããŠãããšæããŸãããããæ£ç¢ºã«ã¯ããã®APIã®äžè¬çãªæ§æã¯æ¬¡ã®ãšããã§ããããã§ã {Element}
ã¯reactèŠçŽ ã§ãã
Mui.{element} [
{Element}.{propName}.{propValue}
{Element}.children [
Mui.{otherElem} [
{OtherElem}.{propName}.{propValue}
// etc.
]
]
]
ããªãã¯ãã®ããšã«ã€ããŠã©ãæããŸããïŒ ãã®APIã¯ãå ·äœçãªå®è£ ãèŠããå Žåã«ãã©ã€ãã©ãªã«fabulous-simple-elementsã®ã¢ã€ãã¢ãåºæ¿ããŸããã
ããã¯å®ç§ã ãšæããŸããããªãã®æèŠãèãããã£ãã®ã§ãã ã¡ã€ã³ã©ã€ãã©ãªãæ©èœããæ¹æ³ã§ãããããæåã¯ãã¹ãŠãprop
æªæºã«ããããšãéžæããŸãããããã¡ãããå®éã«ã¯ã³ã³ããŒãã³ãåºæã®ããããã¯ãããŸããããMUIã«ã¯ã³ã³ããŒãã³ãåºæã®ãããããããããŸããã
å°æåã®ã¢ãžã¥ãŒã«åã«åºå·ããã®ãæãè¯ããšæããŸãïŒãããŠäœåãªããŒã¹ãããŒã¯ãç¯çŽããŸãïŒããç§ã¯åè«ãåãå ¥ããŸãã
ãã®ãããªãã®ãèªåçæããã®ã§ãå€æŽãç°¡åã«ãªããŸããã
æŽæ°ããŠãç¥ããããŸãã
ãã ãç¹ã«æèŠãèãããããšãäžã€ãããŸãã ããã¯ClassName
ã®ãã®ã§ãã makeStyles
ããã¯ã¯ãæž¡ããããã®ãšåãå°éå
·ãæã€ãªããžã§ã¯ããè¿ããŸããããã¹ãŠã®ïŒJSSïŒèŠçŽ ã¯ã䜿çšããã¯ã©ã¹åã§ããæååã«çœ®ãæããããŠããŸãïŒããšãã°ã prop.className
ïŒã
ããŠãFïŒã§ãããå
¥åããæ¹æ³ããªãã®ã§ãç§ã¯èªåãæã£ãŠãããã®ã§äœæ¥ããå¿
èŠããããŸãã éåžžãã¹ã¿ã€ã«ãªããžã§ã¯ãã®ãã¹ãŠã®å°éå
·ã¯IStyleAttribute list
ã§ãã ããã¯ã prop.className
ã«ãªãŒããŒããŒããè¿œå ããŠã IStyleAttribute list
$ãåãå
¥ããããšãã§ããããšãæå³ããŸããããã¯ãå®è¡æã«æååã§ããããããã¡ããåã§ãã å®éã«IStyleAttribute list
ãæž¡ããå Žåã倱æããŸãã prop.className
ã«å ããŠãããã¯ãã¹ãŠã®classes.<element>.<classesName>
ïŒ <element>.classes [ ... ]
ã§äœ¿çšïŒã«ãåœãŠã¯ãŸããŸãã ã¯ã©ã¹åïŒæååïŒãåãå
¥ããŸãã
ã芧ã®ãšãããç§ãè¡ã£ãããšã¯ãã¹ã¿ã€ã«ãªããžã§ã¯ãã®ãã¹ãŠã®IStyleAttribute list
ããããã£ãasClassName
ã§ã©ããããããšããèŠæ±ãããããšã§ããããã¯ãåºæ¬çã«IClassName
ã«ããã¯ââã¹ã解é€ããã ãã§ãã ïŒå¿
èŠã«å¿ããŠã string
ã®ãããã·ïŒã 次ã«ã prop.className
ã«ãªãŒããŒããŒããè¿œå ããŠIClassName
$ãåãå
¥ãããã¹ãŠã®classes
ãããããIClassName
ãåãå
¥ããããã«ããŸããã ç§ã¯ããããã匷ãåä»ããããŠããã®ã奜ãã§ããããããäœåãªåä»ããå¿
èŠãšããã®ã¯å¥œãã§ã¯ãããŸããïŒãã¹ãŠã®ãããã¬ãã«ã®CSSã«ãŒã«ã«å¯ŸããŠasClassName
ïŒã ããªãããããèŠéããšã³ã³ãã€ã©ã¯æå¥ãèšãã§ãããããããããã¯ããªãã«äœããã¹ãããæããŠãããŸããããããŠããã¯ãŸã äœåãªãã€ãºã§ãã
ããã«ã€ããŠäœãæèŠã¯ãããŸããïŒ
ãŸããç§ã¯ããã«æ°ã¥ããŸããïŒ
f#
listItem.divider ((page = Home))
ããã§ã¯ãäºéã®æ¬åŒ§ãå¿
èŠã§ããããã§ãªãå ŽåãFïŒã¯ãïŒååšããªãïŒ page
ãã©ã¡ãŒã¿ãŒãHome
ã«èšå®ããŠïŒ$ value
ã®ä»£ããã«ïŒ$ listItem.divider
ãåŒã³åºãããšããŠãããšè§£éããŸãã value
ãã©ã¡ãŒã¿ãpage = Home
ã«èšå®ãããŠããŸãïŒã ãããåé¿ããæ¹æ³ãããããŸããïŒ
ããã«ã¡ã¯@cmeeren ããŸã第äžã«ãç§ã¯ãã®æ§æã倧奜ãã§ãïŒ
Mui.appBar [
prop.className c.appBar
appBar.position.fixed'
appBar.children [
Mui.toolbar [
toolbar.children [
Mui.typography [
typography.variant.h6
typography.color.inherit'
prop.text (pageTitle model.Page)
]
]
]
]
]
ããã¯ãšãŠããããã§ãšãŠãã·ã³ãã«ã«èŠããŸãïŒ ããç§ãããªããªããäžè¬çãªprop
é¢æ°ã®ããã€ããã$ïŒ$ 3 $ïŒ$ã®ä»£ããã«ïŒãŸãã¯äžç·ã«ïŒ prop.className
appBar.className
ãªã©ã®ã³ã³ããŒãã³ãåºæã®å°éå
·ã«è€è£œããã§ãããããããã¯ãã¹ãŠå¯Ÿç§°ã«èŠããŸãããããéèŠãªã®ã¯ã makeStyles
ãMuiåºæã§ãããããæååãåãåãäžè¬çãªprop.className
ã§ã¯ãªããMuiåºæã®ã³ã³ããŒãã³ãã«IClassName
ãªãŒããŒããŒããäžããããšã§ããæ§ç¯ããMuiã³ã³ããŒãã³ãã«ã®ã¿é©çšãããããšã¯çã«ããªã£ãŠããŸãã
ããªãã¯makeStyles
ã«å¯èœãªéãæåã®æ¹æ³ã§åãçµãã ãšæããŸãããå°ãªããšãä»ã®ãšããããã以äžã®æ¹æ³ã¯èããããŸããïŒç§ã¯asClassName
ã®å€§ãã¡ã³ã§ã¯ãããŸããããããããStyles.createClass
代ããã«
listItem.divider ((page = Home))
ã«é¢ããŠã¯æ³šæãå¿
èŠã§ããããããŒé¢æ°let when (x: bool) = x
ãè¿œå ããããšãã§ããŸãããããã¯åãªããã€ãºã§ãã FïŒã³ã³ãã€ã©ãé¢æ°ã®é©åãªãªãŒããŒããŒãã解決ã§ããªãçç±ãããããªããããã³ã³ãã€ã©ã®ãã°ãšããŠå ±åããã®ãæåã ãšæããŸããèªåã§è©Šããããšã¯ãããŸããããæéãèš±ãã°èª¿ã¹ãŸãã
æåŸã«ãä»é±ã¯äŒæäžãªã®ã§ãã€ãã®ããã«åå¿ããªãã®ã§ããã¹ãŠãèªãã ããã§ãã¯ãããã§ããªããããããŸããã
ããç§ãããªããªããäžè¬çãª
prop
é¢æ°ã®ããã€ããã$ïŒ$ 2 $ïŒ$ã®ä»£ããã«ïŒãŸãã¯äžç·ã«ïŒprop.className
appBar.className
ãªã©ã®ã³ã³ããŒãã³ãåºæã®å°éå ·ã«è€è£œããã§ãããããããã¯ãã¹ãŠå¯Ÿç§°ã«èŠããŸãããããéèŠãªã®ã¯ãmakeStyles
ãMuiåºæã§ãããããæååãåãåãäžè¬çãªprop.className
ã§ã¯ãªããMuiåºæã®ã³ã³ããŒãã³ãã«IClassName
ãªãŒããŒããŒããäžããããšã§ããæ§ç¯ããMuiã³ã³ããŒãã³ãã«ã®ã¿é©çšãããããšã¯çã«ããªã£ãŠããŸãã
ä»ãããã§ãã¯ããŠãã ãã:)ç§ã¯éå»æ°æ¥éã«å€§å¹ ãªæ¹åãšæ¡åŒµãè¡ããããããããã·ã¥ããã ãã§ãïŒãŸã è¡ãããŠããŸãããçŸåšãçæãããå°éå ·ãæ€èšŒããŠæ¹åããããã«ãã¹ãŠã®MUIã³ã³ããŒãã³ãã調ã¹ãŠããŸãïŒã
ããªãã¯
makeStyles
ã«å¯èœãªéãæåã®æ¹æ³ã§åãçµãã ãšæããŸãããå°ãªããšãä»ã®ãšããããã以äžã®æ¹æ³ã¯èããããŸããïŒç§ã¯asClassName
ã®å€§ãã¡ã³ã§ã¯ãããŸããããããããStyles.createClass
代ããã«
ãã䜿ãããã®ã§ãªãã¹ãçããããã®ã§ãããä»ã®ååã§ãæ§ããŸããã ç§ã¯IStyleAttribute list
ã®éè² è·ãæ±ããã ãã®å¿ã®ååãæã£ãŠããŸããã ããã¯æœåšçã«ããªãã®ãã€ãºãåãé€ãã§ãããããããŠãããæè¡çã«ééã£ãŠäœ¿ãããããšãã§ãããšããŠããããéåžžã«å±éºã§ãããšã¯æããŸããã
listItem.divider ((page = Home))
ã«é¢ããŠã¯æ³šæãå¿ èŠã§ããããããŒé¢æ°let when (x: bool) = x
ãè¿œå ããããšãã§ããŸãããããã¯åãªããã€ãºã§ãã FïŒã³ã³ãã€ã©ãé¢æ°ã®é©åãªãªãŒããŒããŒãã解決ã§ããªãçç±ãããããªããããã³ã³ãã€ã©ã®ãã°ãšããŠå ±åããã®ãæåã ãšæããŸããèªåã§è©Šããããšã¯ãããŸããããæéãèš±ãã°èª¿ã¹ãŸãã
ãããã§ãç§ã¯ä»åé¡ãæåºããŸããïŒ https ://github.com/dotnet/fsharp/issues/7423
æåŸã«ãä»é±ã¯äŒæäžãªã®ã§ãã€ãã®ããã«åå¿ããªãã®ã§ããã¹ãŠãèªãã ããã§ãã¯ãããã§ããªããããããŸããã
äºè§£ããŸãããåé¡ãããŸããã ç§ãäœãã«åºããããå Žåãç§ã¯åé¡ãæçš¿ãç¶ããŸãããããŠããªãã¯ããªãèªèº«ã®æéã«ãã çããŸãã
ä»ãããã§ãã¯ããŠãã ãã:)ç§ã¯éå»æ°æ¥éã«å€§å¹ ãªæ¹åãšæ¡åŒµãè¡ããããããããã·ã¥ããã ãã§ãïŒãŸã è¡ãããŠããŸãããçŸåšãçæãããå°éå ·ãæ€èšŒããŠæ¹åããããã«ãã¹ãŠã®MUIã³ã³ããŒãã³ãã調ã¹ãŠããŸãïŒã
çæãããããã¥ã¡ã³ãããããæ¬åœã«è¯ãããã§ãðç¬èªã®ãªããžããªãé 眮ããæéãããããŸãããïŒ
ãã䜿ãããã®ã§ãªãã¹ãçããããã®ã§ãããä»ã®ååã§ãæ§ããŸããã IStyleAttributeãªã¹ãããªãŒããŒããŒãããã ãã§ããã®ã§ããã ããã¯æœåšçã«ããªãã®ãã€ãºãåãé€ãã§ãããããããŠãããæè¡çã«ééã£ãŠäœ¿ãããããšãã§ãããšããŠããããéåžžã«å±éºã§ãããšã¯æããŸããã
ãããããŸãããã§ããããå¯è©±ã©ã€ãã©ãªã¯åžžã«åã·ã¹ãã ãã ãŸããŸã;ïŒ
ãããã§ãç§ã¯ä»åé¡ãæåºããŸããïŒdotnet / fsharpïŒ7423
çŽ æŽãããïŒ ã©ããããããšã
çæãããããã¥ã¡ã³ãããããæ¬åœã«è¯ãããã§ãðç¬èªã®ãªããžããªãé 眮ããæéãããããŸãããïŒ
ç§ã¯ããã«ã€ããŠèããŠããŸãããããŸã ããã€ãã®éèŠãªãã°ããããŸãïŒäŸïŒïŒ27ïŒãã¹ãŠãåãå Žæã«çœ®ããšãã䟿å©ãã§ç解ãããã®ã§ãæºåãã§ãããŸã§ããã«çœ®ããŠãããšæããŸãnugetã®ãã¬ãªãªãŒã¹çšïŒé·ãããªãããšãé¡ã£ãŠããŸãïŒã
@Zaid-Ajajç§ã¯Feliz.MaterialUIãã»ãŒå®æãããŸããã éããªãå¥ã®ãªããžããªã«å ¬éãããŸãã äœããããŸããããã€ãã®èšèšäžã®æ±ºå®ããã§ãã¯ããFelizãšã®äžè²«æ§ã確èªããã ãã§ãªããããã€ãã®å®è£ ã®ãã®ããã§ãã¯ããŠãããã®ã¯çŽ æŽãããããšã§ãïŒããšãã°ãå éšã§äœæãããã®ã䜿çšããŠããŸããããããšãç§ãæã£ãŠãããã®ããããŸããïŒ Felizããã¯äœ¿çšããŠããŸãããã䜿çšããå¿ èŠããããŸãïŒã
æ°ããã¬ããäœæãããšãã«ãã¬ãã¥ãŒãããå 容ã説æããåé¡ãäœæããŠã¿ã°ãä»ããŠã倧äžå€«ã§ããïŒ
Feliz.MaterialUIã®ãã©ãããcmeeren/Feliz.MaterialUIã«ã¢ããããŒãããŸããã ã¬ãã¥ãŒãããããšã«é¢ããŠããã€ãã®åé¡ãäœæããŸããã
ã芧ããã ããã°å¹žãã§ãïŒ
ååé¡ã«å€ãã®æéãè²»ããå¿ èŠã¯ãããŸããã 以åã®ã³ã¡ã³ãã§è¿°ã¹ãçç±ãããã»ã«ã³ããªãããªã³ã欲ããã ãã§ãã ãããããã°éèã®äžã«å ¥ã£ãŠããã£ãã§ããããããã§ãããã ãã§ãããã§ããã
ãã¡ãããæ¥ãå¿ èŠã¯ãããŸããã :)
çŽ æŽãããä»äº@cmeerenïŒ äžèŠãããšããã€ã³ãã£ã³ã°ã¯éåžžã«ãããã«èŠããŸããä»åŸæ°æ¥ã§ååé¡ãèŠãŠãããŸããïŒsmileïŒãçŽæããŸãã
ããïŒ åé¡ãåŒãç¶ãæ€èšããæ©äŒã¯ãããŸããïŒ ç¹°ãè¿ããŸãããæ¥ãã§ããŸãããæ°é±éããªãããé£çµ¡ããªãã®ã§ããã¬ã³ããªãŒãªãªãã€ã³ããŒã§ãð
ç§ã¯å®éã«åé¡ã調ã¹ãŸããããåã«è¿°ã¹ãããã«ãAPIãåªããŠãããã©ããã¯ãŠãŒã¹ã±ãŒã¹ã«ç±æ¥ãããããè©ŠããŠã¿ãããã«ã¢ã«ãã¡çãå ¬éããããã«äŸé ŒããŸãããããŸã æã£ãŠããŸãããæéã¯ãŸã ããã§ãïŒä»é±ã¯ç§ã®å¿ã®å¥¥åºã«ãããŸããïŒsmile :)
ããã«ã¡ã¯@cmeeren ãç§ãã¡ã¯ããã解決ããããšèããããšãã§ãããšæããŸãããïŒ åé¡ãã¯ããŒãºããŸããå¿ èŠã«å¿ããŠãããäžåºŠéããŠããã«è°è«ããŠãã ããã
æãåèã«ãªãã³ã¡ã³ã
ããã«ã¡ã¯@cmeeren ãç§ãã¡ã¯ããã解決ããããšèããããšãã§ãããšæããŸãããïŒ åé¡ãã¯ããŒãºããŸããå¿ èŠã«å¿ããŠãããäžåºŠéããŠããã«è°è«ããŠãã ããã