まだまだReactにたどり着けてないんだけど・・JSXおさらい。
今回も柴咲先生に教えをこうで候。
https://oukayuka.booth.pm/items/1312652
柴咲先生。
JSX
- JavaScripでHTMLっぽいのが書けるようJavaScriptを拡張したもの
- HTMLのDOM構文にロジックを埋め込むテンプレート構文ではない
- JavaScript eXtensionの略
何故テンプレート構文じゃないかってのは、本に詳しく書いてある(すごく納得できる・・)
- FacebookのいいねをMVCでやろうとすると無理がある(本ではRailsが比較として出てくるんだけど、Rails触ったことないので、.net MVCに読み替えて読んでみたりしている・・)
- Reactは複雑なDOMの書き換えに対しコンポーネントという単位にロジックとデザインを完結させ、インタラクティブな処理を実現している
TSX
- JSXのTypeScript版
- 拡張子「.tsx」
JSX文法
クラス
className
<div className="App">
const logoOptions = { alt:"logo", className: "App-logo", src: logo }; : : <img {...logoOptions} /> ← 展開される
for
htmlFor
if文
const title = "ちょっとさみしい"; : : <> {title && <p>{title}</p>} </>
{title && <p>{title}</p>} ・・titleの部分がtrueだと続く値が処理される。
if と else
<> {title && <p>{title}</p>} {!title && <p>{title2}</p>} </>
とか、三項演算子を使う
<> {title? && <p>{title}</p> : <p>{title2}</p> } </>
繰り返し
const targets = ["dog", "cat", "kame"]; : : <> {targets.map(target => <span>{target}</span>)} </>
- JSXリテラル内だと <!-- --> 使えない
- {}でくくったJS書ける部分は // とか /* */ が使える
- <>ツリーの一番上は、ひとつにしないとエラーになる