# **CRUD** ## R * Api:get(`http://localhost:8080/api/users/all`) 暫時 , * Api:get(`http://localhost:8080/api/users?${query}`), * Page:container/user/Users.jsx Define:container/Columns.jsx 表格定義 => 合併至Users DataTable:component/DataTable 表格做成元件 ## D * Api:delete(`http://localhost:8080/api/users/${id}`), * Page:container/user/UsersDelete * Container:user/DeleteAlertDialog Delete alertDialog Delete alertDialog:delete api ## U * Api:put(`http://localhost:8080/api/users/${id}`,params), * Page:container/user/UsersEdit.jsx 編輯表格 * Component:buttons/EditButton 按鈕做成元件 ## C * Api:post(`http://localhost:8080/api/users`, params), * Page:container/user/UserAdd.jsx 導入至Users.jsx使用 ## 8/21(一) Read & Delete **Users.jsx:** * Api:get(`http://localhost:8080/api/users/all`) 暫時 * 定義 actions 陣列(內有deleteFunction,editFunction) * 當作props傳送至DataTable.jsx * 定義 Columns:每個 row 的項目 **DeleteAlertDialog.jsx:** * Api:delete(`http://localhost:8080/api/users/${id}`), * 用DataTable內定義的api function 來call api * DeleteAlertDialog的function *handleDeleteClick(onClick打delet的api) **DataTable.jsx:** * 定義獲取api的props getDataApi={ userApi.getUsers } * 接收從Users.jsx的actions當作props ## 8/22(二) Read & Delete **Users.jsx:** * 找出id值帶入DeleteAlertDialog **deleteFunction:** ``` const deleteFunction = { icon: Eraser, function: (帶入id) => { userApi.delete(帶入id) .then(response => { setUsersData(response.data); setDeleteOpen(true); }); }, name: "Delete", }; const actions = [deleteFunction] ``` **DeleteAlertDialog:** * 帶入id * 隱藏按鈕 ``` <DeleteAlertDialog id={userIds} //帶入id actions={deleteFunction} getUserApi={userApi.delete} deleteOpen={deleteOpen} deleteClose={() => setDeleteOpen(false)} setDeleteOpen={setDeleteOpen} /> ``` ## 8/23(三) Read & Delete 加入一條要帶對應row的id** ``` const actions = [ { icon: Eraser, name: 'Delete', actionFunction: id => { console.log("User ID:", id); getUser(id) **// 加入一條要帶對應row的id** .then(res => { console.log("Received user data:", res.data); setId(res.data); }) .then(() => setDeleteOpen(true)) }, }, ]; ``` 將function帶入DeleteAlertDialog ``` const DeleteAlertDialog = ({ actions, setDeleteOpen , deleteOpen }) => { const handleDelete = () => { userApi.delete(actions) .then(() => { setDeleteOpen(false); }); }; const handleCancel = () => { setDeleteOpen(false); }; ``` ## 8/24(四) Read & Delete 1. 用ref做重新渲染 2. up commit (Read & Delete) Ref: