哪来的loading?
loading 对象是 dva 内置的,他会监听你指定的异步请求方法,方法开始的时候该值为 true , 异步方法结束了该值自动置为 false , 可用于页面刚进来时骨架屏的加载和某些需要 loading 状态的场景,当然 你可以在后面定义多个值(上面注释有说明),实现你当前组件的全局 loading 状态。在上面的代码中,页面刚加载的时候我们发了一个异步方法 (nodelist 仓库下的异步 nodelists 方法),submitting 变为 true 骨架屏效果出现,这个方法执行完了(数据已经拿到)后 submitting 会 变为 false 。
export default connect(
({
userAndlogin,
loading,
}: {
userAndlogin: StateType;
loading: {
effects: {
[key: string]: boolean;
};
};
}) => ({
userAndlogin,
submitting: loading.effects['userAndlogin/login'],
}),
)(Login);
刚开始看不懂上面的代码,了解了loading之后简化去掉类型限制就比较明了了:
export default connect(
({
userAndlogin,
loading,
}) => ({
userAndlogin,
submitting: loading.effects['userAndlogin/login'],
}),
)(Login);
其中userAndlogin
对应model中的namespace,可以通过它获取model中定义的state。
dva-loading 实践用法:https://www.jianshu.com/p/61fe7a57fad4
网友评论