使用antd Table + mobx 处理数组 出现的一系列问题

在store中定义了一个数组: @observable list = [...]

若是在table组件中直接使用list:

  <Table
       className={styles.table}
       columns={this.columns}
       dataSource={list}
  />

这时就会提示以下错误:

从提示中可以看出dataSource希望的是一个数组而不是对象,

what? 我什么时候传入对象啦?

打印一下list:

 

原来是mobx的observable在外面包了一层,把数组转为对象了。。。

那么我们要做的就是把对象转为数组,可以这样做:

  <Table
       className={styles.table}
       columns={this.columns}
       dataSource={list.slice()}
  />

或

const newList = [...list]
  <Table
       className={styles.table}
       columns={this.columns}
       dataSource={newList}
  />

...

然鹅,此时又会出现好多个warning, 哦妈噶,太阔怕了(跑.gif)

说我数组索引超出范围?

那好吧,看来observable怎么把我数组转过去的,我就怎么给他转回来。看文档,mobx提供了toJS()函数,是这样定义的:

 <Table
    className={styles.table}
    columns={this.columns}
    dataSource={toJS(list)}
/>

ok, warning 消失了。

具体就是这么个过程, 至于observable如何把数组转为对象 还有toJS又如何给它转回来的,本人还需探究,也热切希望了解的大佬们可以一起交流下

 

 

 

 

转载于:https://www.cnblogs.com/aloehui/p/9999576.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值