本篇為 [FE302] React 基礎 - hooks 版本 這門課程的學習筆記。如有錯誤歡迎指正!
之前介紹過 Prettier 和 eslint 這兩個前端工具,能夠分別檢查程式碼格式,以及檢查語法:
- [week 21] 補充:Prettier 套件 - 自動整理程式碼格式
- [week 3] 設定 eslint:用來檢查語法的工具
在 VSCode 可以針對錯誤進行快速修復,也可以選擇加入註解,忽略 eslint 的錯誤訊息:
除此之外,React 有另一個能夠提升程式碼品質的功能,也就是透過 PropTypes 來驗證 Props 型態。
利用 PropTypes 驗證 Props
詳細可參考官方文件:Typechecking With PropTypes
在使用前,需要先修改 eslint 規則,也就是在 react 專案新增 .eslintrc.json 檔案。
內容如下,或是參考 yannickcr/eslint-plugin-react,意思是專案中的每個 component 都要加上 props,否則會出現警告訊息:
{
"extends": ["react-app"],
"rules": {
"react/prop-types": "warn"
}
}
之後輸入 npm start 指令運行 React,就會在終端機介面看到警告訊息。
接下來會以 TodoItem component 作為範例。
引入使用 ProtoTypes
首先要在 TodoItem.js 引入使用 ProtoTypes:
import PropTypes from 'prop-types';
接著幫 TodoItem component 的 props 加上 PropTypes,注意 function 在這裡是縮寫 func:
TodoItem.propTypes = {
todo: PropTypes.object,
handleDeleteTodo: PropTypes.func,
handleToggleIsDone: PropTypes.func,
};
也可以將 object 寫得更詳細,描述物件中的 key-value 以及型別:
TodoItem.propTypes = {
todo: PropTypes.shape({
id: PropTypes.number,
content: PropTypes.string,
isDone: PropTypes.bool,
}),
handleDeleteTodo: PropTypes.func,
handleToggleIsDone: PropTypes.func,
};
加上 PropTypes 進行修改的好處在於:
- Console 不會再出現 warning
- 未來若有其他人接手專案時,能夠快速瀏覽這個 Component 有哪些參數,以及瞭解 PropTypes 型別
- 也能透過一些 Library 將 PropTypes 產生一份文件