图床项目
1、Suspense 和 lazy
- Suspense
React 16.6 新增了
官方文档
1 | <Suspense fallback = {<Loading/>}> //等待加载时显示 Loading组件 |
- React.lazy
动态引入组件
1 | //使用前 |
React.lazy 接受一个函数,这个函数需要动态调用 import()。它必须返回一个 Promise,该 Promise 需要 resolve 一个 default export 的 React 组件。
然后应在 Suspense 组件中渲染 lazy 组件,如此使得我们可以使用在等待加载 lazy 组件时做优
- 完整代码
1 | import {Suspense, lazy} from 'react' |
2、mobx
@observable 被观察者
- 类似 Vuex 的 state,声明需要的状态
- 被观察者可以是:JS 基本数据类型、引用类型、普通对象、类实例、数组和映射
action 动作
用来更改被观察者
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20import {observable, action, makeObservable} from 'mobx'
import {Auth} from '../models'
class UserStore {
@observable currentUser = null
constructor() {
makeObservable(this)
}
@action pullUser() {
this.currentUser = Auth.getCurrentUser()
}
@action resetUser() {
this.currentUser = null
}
}
export default new UserStore()observer
可以将 React 组件转换为可响应 MobX 的组件
1
2
3
4
5
6
7
8
9
10
11
12
13import React from 'react'
import {observer} from 'mobx-react'
import Uploader from '../components/Uploader'
import Tips from '../components/Tips'
const Home = observer(() => {
return (
<>
<Tips>请先登录!!</Tips>
<Uploader/>
</>
)
})
export default Home完整代码见Github