react-antd 的table下的数据如何添加一个Modal ?

如何点击表格里的数据弹出一个模态框?


import React from 'react';
import ReactDOM from 'react-dom';
import 'antd/dist/antd.css';
import './index.css';
import { Table, Tag,Modal } from 'antd';

const columns = [
  {
    title: 'Name',
    dataIndex: 'name',
    key: 'name',
    render: text => <a href="" onClick={()=>{
      return (
        <div>
          <Modal
          title="Basic Modal"
          visible={true}
          onOk={()=>{}}
          onCancel={()=>{}}
        >
          <p>Some contents...</p>
          <p>Some contents...</p>
          <p>Some contents...</p>
        </Modal>
        </div>
        
      )
      
    }}>
    {text}
    </a>,
  },
  {
    title: 'Age',
    dataIndex: 'age',
    key: 'age',
  },
  {
    title: 'Address',
    dataIndex: 'address',
    key: 'address',
  },
  {
    title: 'Tags',
    key: 'tags',
    dataIndex: 'tags',
    render: tags => (
      <span>
        {tags.map(tag => {
          let color = tag.length > 5 ? 'geekblue' : 'green';
          if (tag === 'loser') {
            color = 'volcano';
          }
          return (
            <Tag color={color} key={tag}>
              {tag.toUpperCase()}
            </Tag>
          );
        })}
      </span>
    ),
  },
  {
    title: 'Action',
    key: 'action',
    render: (text, record) => (
      <span>
        <a style={{ marginRight: 16 }}>Invite {record.name}</a>
        <a>Delete</a>
      </span>
    ),
  },
];

const data = [
  {
    key: '1',
    name: 'John Brown',
    age: 32,
    address: 'New York No. 1 Lake Park',
    tags: ['nice', 'developer'],
  },
  {
    key: '2',
    name: 'Jim Green',
    age: 42,
    address: 'London No. 1 Lake Park',
    tags: ['loser'],
  },
  {
    key: '3',
    name: 'Joe Black',
    age: 32,
    address: 'Sidney No. 1 Lake Park',
    tags: ['cool', 'teacher'],
  },
];

ReactDOM.render(<Table columns={columns} dataSource={data} />, document.getElementById('container'));

如何在点击name弹出这个Modal?

阅读 6.2k
2 个回答
{
    title: 'Name',
    dataIndex: 'name',
    key: 'name',
    render: text => <a href="" onClick={()=>{
      return (
        <div>
          <Modal
          title="Basic Modal"
          visible={true}
          onOk={()=>{}}
          onCancel={()=>{}}
        >
          <p>Some contents...</p>
          <p>Some contents...</p>
          <p>Some contents...</p>
        </Modal>
        </div>
        
      )
      
    }}>
    {text}
    </a>,
  },

这里不能这么写,你modal封装成一个组件。 只需要把组件传进来就行了, 触发弹窗在组件内部触发
比如:

    const modalView = (props) =>
    {
    
    const [visible,setVisible] = useState(false)
    
    return (<>
    <a herf="#" onClick={()=>setVisible(true)}
      <Modal
      title="Basic Modal"
      visible={visibvle}
      onOk={()=>{}}
      onCancel={()=>{}}
    >
      <p>Some contents...</p>
      <p>Some contents...</p>
      <p>Some contents...</p>
    </Modal>
    </a>
    </>)
    
    }

然后在render中

render: text => <modalView />

把Modal的JSX写在外面,然后Modal的调用写成函数,name标签的Click事件调用

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题