這次來簡單加入一下之前 Day20的檢查工具,來檢查我們製作出來的身分證是不是合規。
把之前 Day20 做好的檔案 IDChecker.js 放在相同的資料夾,然後把檢查功能中引入到程式碼中,並且使用 checkBasic:
import {checkBasic} from "./IdCreater";
並且建立存放檢查值的參數,以及檢查結果,這邊定義在 IdCreaterComponent() 一開始處:
  let [checkId, setcheckId] = useState("X");
  let [checkResult, setCheckResult] = useState("X");
接著建立一個檢查功能的畫面,包含輸入身分證字號的欄位,以及檢查按鈕。
在檢查欄位的時候使用 onChange 進行存值的作業,然後再用按鈕的 onClick 進行檢查作業,最後在 label 中呈現結果。
<div>
  <label>---</label>
</div>
<div>
  <label>輸入身分證字號:</label>
  <input
    itemType="text"
    onChange={(e) => setcheckId(e.target.value)}
  ></input>
  <button onClick={idChechHandler}>檢查</button>
</div>
<div>
  <label>檢查結果:{checkResult}</label>
</div>
接下來就是要處理 onClick 呼叫的 Handler 「idChechHandler」,這邊直接呼叫檢查功能 checkBasic() 並把結果存到 checkResult 內。
要注意的是,需要把結果轉換,因為回傳值的資料型態為布林值,是無法顯示在畫面上的(這就是 Day24 發生的問題,並不是轉譯發生問題),因此用三元運算子(條件運算子)把它轉成文字顯示。
這樣就大功告成囉!
const idChechHandler = () => {
  const r = checkBasic(checkId) === true ? "格式正確" : "格式錯誤";
  setCheckResult(r);
  console.log(`id(${checkId}) check result=(${r})`);
};

原來 Day24 就是這樣解決了,還好昨天有看到三元運算子並且研究一下,今天寫的時候發現,原來之前沒有顯示並不是 Render 的問題,而是自己問題,真蠢...