到哪都會用到的 Loading。
簡述
1. 先下載套件
來源:https://www.npmjs.com/package/react-loading-overlay#styles-with-emotion
| 1 | npm install react-loading-overlay | 
2. 用 styled component 撰寫全屏樣式
附 code 之前先解釋一下邏輯,LoadingOverlay 預設的 HTML 結構長這樣:
- div.wrapper容器- div.overlay載入畫面
 
這裡設定的東西是「容器」,因為希望有全屏效果,所以使用 fixed 來做:
| 1 | const StyledLoader = styled(LoadingOverlay)` | 
3. 把改好的 Component 放上去
| 1 | function App () { | 
補充:之所以要用 && 條件渲染是因為 LoadingOverlay 關閉時並不會把 div.wrapper 移除,而 div.wrapper 又正好放在最頂層,等於說會蓋在所有元素之上,沒辦法做任何操作。
所以才得加上條件渲染的方式來解決這個問題,不過要注意用這種方式的話 fade 的效果就會消失。
如果不想這麼麻煩的話,可以把 CSS 改成這樣:
| 1 | const StyledLoader = styled(LoadingOverlay)` | 
這樣就完成囉~

附註
雖然照上面的作法應該就沒問題了,但應該會一直出現 Warning 訊息,像這樣:

簡單來說應該是 styles 的 propType 不正確的關係,但我就沒有要傳 styleds 啊!
所以後來找到 這篇 的 issue,但作者似乎都不回應了,所以只好這樣子解:
| 1 | import LoadingOverlay from 'react-loading-overlay'; | 
或者也可以用別人修正過後的 套件 來試試看。