loading爲dva的插件,全局可用,它裏面維護了一些布爾值,用於控制loading動畫效果的顯示與隱藏,經過@connect()來注入使用app
官網介紹以下:動畫
https://dvajs.com/spa
在AntD Pro裏,官方示例了一些用法:插件
@connect(({ list, loading }) => ({
list,
loading: loading.models.list,
}))
class CardList extends PureComponent {
...
}
@connect(({ login, loading }) => ({ login, submitting: loading.effects['login/login'], })) class LoginPage extends Component { ... }
這裏,展現了兩種用法,在介紹以前,先打印整個loading出來看一看結構3d
這裏解釋一下用法:code
當咱們執行了dispatch({ type: 'query', payload })後,這個叫作query的effects,以及包含這個effects的model,會被分別添加到loading的effects和models中,並受到監控,某effects得到結果,該effects的布爾值爲false,只有該model全部的effects得到結果後,該model的布爾值爲false,全局須要執行的effects均完畢,global才爲false。(true:loading,false:loaded)component
我連續執行兩個dispatch,結果以下,請注意template的變化:blog
知道這些後,咱們還要知道,Ant Design爲咱們提供了loading控制參數,例如Table的 it
有了這兩件法寶,就能夠放手loading,輕鬆作出一個體驗不錯的應用了,步驟一二三table
@connect(({ template, loading }) => ({ template, loading: loading, })) class Index extends Component { const tTableProps = { dataSource: list, loading: loading.effects['template/query'], } ...... return ( <Table {...tableProps} columns={columns} simple rowKey={record => record.id} components={{ body: { wrapper: CommonBody }, }} /> ) }
完。