---
# System prepended metadata

title: 觀念/技巧/踩雷分享
tags: [javascript]

---

# 觀念/技巧/踩雷分享

### 基礎觀念
- **slice 與 splice 的差別：** slice 不會改變原本的 array，會直接切出我們要的區間，而 splice 是改變原本的 array，如果用一個新的變數來接 arr.splice(); 拿到的會是他切下來的部分，而不是我們想保留的。

### API
- 善用 useMutation 提供的 onCompleted / onError 來實現完成或錯誤訊息。

### 表單 Form
- 使用 redux-form 時盡量採用 handleSubmit 直接放在 button 的方法避免 nested-form 全部一起送出的問題。
- 當 invalid 的 form data 出現時，請直接在 submit button 給 disabled 而不要在 handleSubmit 裡面才檢查。

### 實用技巧
- 瀏覽器會預設「重整網頁」時儲存使用者「原本滾動到的位置」，該特性可透過 `window.history.scrollRestoration` 訪問，預設是 auto，將它調成 manual 就能避免。
- 要確認頁面是否能夠返回，可以在上個頁面做 push 時帶入 state 到 location 中，頁面上無這個 state 時就不顯示 back button
- `Array.from(Array(length))` 用來創建固定長度空 array



###### tags: `javascript`