import { connect } from 'dva'; import { Table, Pagination, Popconfirm, Button } from 'antd'; import { routerRedux } from 'dva/router'; import styles from './Users.css'; import { PAGE_SIZE } from '../utils/constants'; import UserModal from './UserModal'; function Users({ dispatch, list: dataSource, loading, total, page: current }) { function deleteHandler(id) { dispatch({ type: 'BLOCK_NAME/remove', payload: id, }); } function pageChangeHandler(page) { dispatch({ type: 'BLOCK_NAME/fetch', payload: { page }, }); } function editHandler(id, values) { dispatch({ type: 'BLOCK_NAME/patch', payload: { id, values }, }); } function createHandler(values) { dispatch({ type: 'BLOCK_NAME/create', payload: values, }); } const columns = [ { title: 'Name', dataIndex: 'name', key: 'name', render: text => <a href="">{text}</a>, }, { title: 'Email', dataIndex: 'email', key: 'email', }, { title: 'Website', dataIndex: 'website', key: 'website', }, { title: 'Operation', key: 'operation', render: (text, record) => ( <span className={styles.operation}> <UserModal record={record} onOk={editHandler.bind(null, record.id)}> <a>Edit</a> </UserModal> <Popconfirm title="Confirm to delete?" onConfirm={deleteHandler.bind(null, record.id)}> <a href="">Delete</a> </Popconfirm> </span> ), }, ]; return ( <div className={styles.normal}> <div> <div className={styles.create}> <UserModal record={{}} onOk={createHandler}> <Button type="primary">Create User</Button> </UserModal> </div> <Table loading={loading} columns={columns} dataSource={dataSource} rowKey={record => record.id} pagination={false} /> <Pagination className="ant-table-pagination" total={total} current={current} pageSize={PAGE_SIZE} onChange={pageChangeHandler} /> </div> </div> ); } function mapStateToProps(state) { const { list, total, page } = state['BLOCK_NAME']; return { list, total, page, loading: state.loading.models['BLOCK_NAME'], }; } export default connect(mapStateToProps)(Users);