React 語法 JSX

語法

基礎介紹文章紀錄

JSX

看起來是 html 與 JS 混合使用,比較接近 JavaScript 而不是 HTML,JSX允許你使用 JavaScript 所有的功能。

專案產生的public/index.html,含有基本HTML範本id="root"的div區塊

React 中的 JSX 區域

接著看一下src/index.js裡的程式碼

基本範例: ReactDOM.render

使用變數 const element = ...;

關於Babel

是JavaScript 前處理器,編譯器,主要能轉換JSX與ES6成各瀏覽器支持的JS


範例: 在 html中 用{JS} 表達式崁入變數

範例: 帶入onClick 與 Event

  • 駱駝式命名

    • class 要用 className 然後可以在 style.css中更改樣式

    • onclick 也要改onClick{函數名稱} 駱駝式命名

    • 實測命名打錯 console 會出現報 Warning: Invalid DOM property class. Did you mean className?

  • 輸入類的元件 button/input/textarea 互動事件觸發時,函式只會接收到一個event類別的參數,並不能傳遞其他參數

  • 布林=true 的屬性值可以不寫

  • onclick 是要帶入函式 而不是結果

circle-exclamation

範例 JSX 引入Inline-style

  • 在style內的是JS物件也可以把他們只給一個const變數

  • 內容與css不同的是必須是小寫駱駝且去除'-'

  • 這種寫法的缺點是不行用hover等特殊效果,需利用其他模組化style寫法

條件渲染

  • 這邊的寫法是根據JS邏輯運算子與JSX寫法

範例: CSS 隱藏方式

控制 css style , 可以選擇以下兩種:

  • display:none (空間會消失 導致畫面排版「跳一下)

  • visibility:hidden(空間會存在)

JS的邏輯運算子

在 JavaScript 中,&& 或 || 這種語法稱作「邏輯運算子arrow-up-right(Expressions - Logical operator)」,而因為在 JSX 中的 {} 內只能放入表達式(expressions),而不能寫入像是 if...else... 這種陳述句(statement)

  • || 就是前面為假時去拿後面的那個,為真拿前面

  • && 就是前面為真時去拿後面的那個,為假拿前面

範例:使用JSX外層判斷將 DOM整個隱藏方式

如果你需要比較嚴格的去控制使用者的行為,不想要使用者透過 CSS 就能簡單修改的話,那麼就把 DOM 整個移除;但如果這個功能被使用者手動打開也不會有太大影響的話,那就使用 CSS 樣式來控制畫面就好,如此會有比較好的效能和體驗(不會讓畫面排版有抖動的情況)。

三元判斷

{條件?(組件):(組件)}

  • 記得要加上() 否則會錯誤

常用範例:當滑鼠滑到時出現某個效果

迴圈重複渲染

當在 JavaScript 中要重複執行某一個內容或動作時,很直覺的會想到可以用 for 迴圈,for 迴圈 本身是個 statements 而非 expressions,執行的時候並不會有回傳值,因此不能直接放到 JSX 中的 {} 內去執行

參考

Last updated