在处理业务时,我们常常会需要处理加载页面,如果当业务繁多时,我们不得不一遍一遍的处理 loading 状态。但是现在 dva-loading 插件可以自动处理 loading 状态,不用再一遍遍地处理 loading 状态,减少了很多工作量。现在我们通过另外一个例子来讲解dva-loading的使用。

    dva-loading 的使用方法也非常简单,首先通过 npm 安装。

    1. $ npm install dva-loading save

    在index.js中使用

    1. import createLoading from 'dva-loading';
    2. const app = dva();
    3. ...
    4. app.use(createLoading());
    5. ...

    此时 state 中新增了一个 loading 对象。loading 对象中的 global 属性表示的全局 loading 状态,models 里是每个 model 的 loading 状态。

    1. loading: {
    2. global: false,
    3. models: {
    4. list: false,
    5. ...
    6. },
    7. }

    这样一来,每次请求期间都会触发 loading 状态,因为 dva-loading 提供了一个 global 属性,通过 conncet 连接
    起来,即可通过 global.loading 访问到。可以在最外层组件使用它,也可以在组件内部使用。这样一来就可以全部统一处理 loading状态。

    1. ...
    2. render() {
    3. const {list, loading} = this.props;
    4. return (
    5. <div>
    6. <h2>List</h2>
    7. <Table columns={columns} dataSource={data} loading={loading.global} />
    8. </div>
    9. )
    10. }
    11. ...
    12. export default connect(({list,loading}) => ({list,loading}))(List);

    另外一点,当你进行某一请求不需要用到全局的 loading 状态时,可以使用如下方法,进行该请求时,全局loading不会变化。

    1. app.use(createLoading({
    2. except: [
    3. list/fetch'
    4. ]
    5. }));