React 初探
剛把專案上線有點無聊、公司又在用 OKR 管理專案、另外我也想試試看 React 的東東,於是就花了大概三天,寫一個 OKR 管理的表格...
我沒有像以前那樣對 React 及 JSX 反感了、也多少感受到 React 對某些人的魅力:對某些很喜歡寫 JavaScript 的人來說,React 真的寫起來很有效率。但我還是覺得自己比較喜歡 Vue。另外外部的 CSS 框架語法好難搞。
總之,來寫些我覺得有趣的東西吧。
JSX, Virtual DOM, or other so.
React 的 JSX:
<main className="foo">
Hello
<h1 onClick={ bar }> { baz } </h1>
there
</main>
其實就是以下語法的語法糖:
React.createElement(
"main",
{ className: "Foo" },
" Hello ",
React.createElement("h1", { onClick: foo }," ", baz, " "),
" there."
);
這代表 HTML 的巢狀結構可以用 JavsScript 完成。
上下關係
與 Vue 一樣,React 可以用 function
關鍵字建構一個組件、並傳送數值給子組件。但如果想要這麼做,你需要用 class
語法。
在 Vue 想傳上下值與事件,你可以在這麼寫:
<!-- 父組件 -->
<main class="foo">
<nav v-bind:propval="baz" v-on:propevt"whatever" >
</main>
<!-- 子組件 -->
<li v-on:click="propevt">{{ propval }}</li>
React 差不多:
<!-- 父組件 -->
<main className="foo">
<nav propval={ baz } propevt={ whatever } >
</main>
<!-- 子組件 -->
<li onClick={ this.propevt }>{ this.props.propval }</li>
但 React 需要使用 class 關鍵字並引入 props:
class Foobar extends React.Component {
constructor(props)
{
super(props);
this.state = {
foobar: props.propval
};
this.propevt = props.propevt;
}
};
constructor 與 super 都是 ES6 關鍵字,constructor 用來產生物件,super 則是取得父層面的物件。
先寫到這邊吧。之後再寫。