本小节,我们需要实现异步载入数据并通过表格展现出来。该表格需要支持排序以及过滤功能。
此处将会用到我们上一章学会的知识模拟异步数据,如果你尚未理解 model 相关内容,可以再过一遍第三章以理解。
引入相关依赖
首先,编辑我们刚刚创建的 src/page/list/index.js 文件。将需要用到的依赖加入。
import { Table } from 'antd';import { connect } from 'dva';
连接 dva
我们对 export 进行调整,将 dva 中的数据传入。\
function mapStateToProps(state) {return {cardsList: state.cards.cardsList,cardsLoading: state.loading.effects['cards/queryList'],};}export default connect(mapStateToProps)(List);
其中当用户 dispatch 对应 effect 时,dva 会自动注入对应 effect 的 loading 状态。
因而我们可以很方便的将 state.loading.effects 中的状态传入。
(对应 card modal 代码请参阅 src/modal/cards.js 文件。)
获取数据
添加 componentDidMount 事件,使得我们可以在组件加载时触发异步请求。
componentDidMount() {this.props.dispatch({type: 'cards/queryList',});}
当我们调用 connect 后,props 会传入 dispatch 方法供用户触发 Action。
展示表格
接着,我们定义表格所需要的列。
class List extends React.Component {columns = [{title: '名称',dataIndex: 'name',},{title: '描述',dataIndex: 'desc',},{title: '链接',dataIndex: 'url',},];// ...}
修改 render 方法展示出 Table。
render() {const { cardsList, cardsLoading } = this.props;return (<div><Table columns={this.columns} dataSource={cardsList} loading={cardsLoading} rowKey="id" /></div>);}
这时,刷新页面就可以看到效果了。
添加链接
我们在表格中最后一列显示的是一个超链接文本,这并不太方便。对其做些修改,使得用户可以直接点击超链接打开页面。
对 columns 中 url 列进行修改添加 render 方法。
{title: '链接',dataIndex: 'url',render: value => <a href={value}>{value}</a>,},

一个简单的表格便完成了,下一节我们将添加一个表单用于创建新的数据到表格中。
