用户登录

在 Vue Store 的动作里经常会包含一些异步的动作,也就是执行动作以后不能马上得到需要数据,等待的时候可以在界面上显示一个加载状态,成功得到了数据以后,再去掉加载状态,显示真正的内容。

在这个 Store 里,可以添加一个 state ,名字叫 loading,用它表示加载状态,先把它设置成 false。 然后在再给它添加一个 mutation,名字叫 setLoading,用这个 mutation 修改 loading 这个 state。

接收一个 state 参数,还有一个 data。 设置一下 state 里的 loading ,让它等于传递给这个 mutation 的 data 参数的值。

在这个 getName 动作里可以模拟一个异步动作,先剪切一下这两行代码。 在这个动作里获取数据之前可以先 commit 一下 setLoading 这个 mutation,把 loading 这个 state 的值设置成 true 。

下面用一个 setTimeout 模拟一下异步动作, 可以在 2000 毫秒以后再去做一些事情, 做的就是把得到的 name 这个数据的值交给 name 这个 state。

最后可以再 commit 一个 setLoading ,把它的值设置成 false,成功获取到了数据以后,就把加载中设置成 false 。

然后打开 App 组件, 在 computed 里面,展开执行 mapState 返回的结果,给它一个数组,里面添加一个 loading,这样在这个组件里可以直接使用 store 里的 loading 这个数据了。

下面可以处理一下在组件上显示的这个标题内容, 添加一组 span 标签,标签文字设置成 加载中... 在这个 span 标签上面用一个 v-if,值是 loading。这样如果 loading 的值是 true,就会显示加载中... 这几个字。

回到浏览器预览一下,刷新一下页面,组件被创建以后它会执行 getName 这个动作,这个动作会先把 loading 的值设置成 true ,成功得到了数据以后又会把 loading 的值设置成 false 。

loading 的值是 true 的时候,就会在界面上显示 加载中 ... 这几个字。

实践:加载状态《 Vue.js 前端应用 #6:数据管理 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点