react dva 使用mock模拟数据,添加数据的时候添加成功却报错

情况描述:
在react dva里面使用mock模拟数据,再通过mock接口向mock里添加数据,结果是可以成功向mock添加数据,但在添加数据完成后报错。
报错:

Warning: Failed prop type: Invalid prop dataSource of type object supplied to Table, expected array.
报错原因:
警告:失败的属性类型:提供给“Table”的“object”类型的属性“dataSource”无效,应为“array”。

因为在组件中使用了,antd的Table,而Table中的dataSource应该为数据,这里传了对象,所以报错。
在这里插入图片描述
此处,data应该是从mock接口获取到的所有数据,为何会是对象形式:
原因是在effects中传参给reducers的时候不注意,传错了数据

之前的错误代码

在这里插入图片描述
getAllData是reducers里面的方法,负责把参数重新赋值给state里的data,而Table的dataSource获取的就是state里的data数据
显然,在错误代码中,result获取的只是新增加的数据对象,并不是全部数据的数组,所以直接把result传给getAllData,会导致state里的data变成对象,就出现了文章最开始的错误

正确做法
在这里插入图片描述
应该在调用添加数据的接口后,再次调用获取全部数据的接口
再把返回的全部数据的数组result作为参数传给getAllData。这样,state里的data获取到的就是所有数据的数组了
至于返回新添加的数据对象的addresult,就可以要需求使用了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值