gpt4 book ai didi

reactjs - 如何在表格行按钮上打开模式并在模式中访问表格数据,在 AntD Reactjs 中

转载 作者:行者123 更新时间:2023-12-05 02:31:29 28 4
gpt4 key购买 nike

我在 antd 表中显示用户数据,我在表中为每一行创建了编辑按钮以访问每一行记录。我想在“编辑”按钮上打开模态单击并在模态中获取相应的行数据。但不能,因为它给出了错误:

'showModal' is not defined

版本:

  • "antd": "^4.18.9",
  • "axios": "^0.26.0",
  • “ react ”:“^17.0.2”,
  • "react-dom": "^17.0.2",
  • "react-router-dom": "^6.2.2"

我的数据来自- https://jsonplaceholder.typicode.com/users

下面是我的代码

import React , {useState , useEffect } from 'react'
import Layout, { Header, Content, Footer } from 'antd/lib/layout/layout';
import { Table, Row, Col } from 'antd';
import axios from 'axios';
import 'antd/dist/antd.css';
import { Modal, Button } from 'antd';
import Example from './NewUserForm';


const columns =[

{
title:'Name',
dataIndex:'name',
key:'uname'

},
{
title:'Email',
dataIndex:'emailss',
key:'uemail'

},
{
title:'Address',
dataIndex:'address',
key:'uaddress'

},
{
title:'Edit User',
dataIndex:'edit',
key:'uedit',
render: (record) =>( <Button type="primary"
onClick={showModal}>
Edit</Button>)

},

];


const UsersList = () =>{
const [data, setdata] = useState([])

useEffect(() => {
getData() }
, [])

const getData = async () =>{
const res = await axios.get(`https://jsonplaceholder.typicode.com/users`)

setdata( res.data.map(row =>({id:row.id,name:row.name,emailss:row.email,address:row.address.city})) );
}

const [isModalVisible, setIsModalVisible] = useState(false);

const showModal = () => {
setIsModalVisible(true);
};

const handleOk = () => {
setIsModalVisible(false);
};

const handleCancel = () => {
setIsModalVisible(false);
};

return (

<Layout>
<Header>Header 1</Header>
<Content style={{padding:50}}>
<Row>
<Col span={3}/>
<Col span={18}>
<Table dataSource={data} columns={columns} />
</Col>
<Col span={3}/>
</Row>
</Content>
<Modal title="Basic Modal" visible={isModalVisible} onOk={handleOk} onCancel={handleCancel}>
<p>Some contents...</p>
<p>Some contents...</p>
<p>Some contents...</p>
</Modal>
<Footer></Footer>
</Layout>

);

}

export default UsersList; ```


最佳答案

将您的 column 移到 Userlist 函数中,以修复 - 'showModal' is not defined 错误

import React , {useState , useEffect } from 'react'
import Layout, { Header, Content, Footer } from 'antd/lib/layout/layout';
import { Table, Row, Col } from 'antd';
import axios from 'axios';
import 'antd/dist/antd.css';
import { Modal, Button } from 'antd';
import Example from './NewUserForm';

const UsersList = () =>{
const [data, setdata] = useState([])

const columns =[
{
title:'Name',
dataIndex:'name',
key:'uname'

},
{
title:'Email',
dataIndex:'emailss',
key:'uemail'

},
{
title:'Address',
dataIndex:'address',
key:'uaddress'

},
{
title:'Edit User',
dataIndex:'edit',
key:'uedit',
render: (record) =>( <Button type="primary"
onClick={showModal}>
Edit</Button>)

},

];

useEffect(() => {
getData() }
, [])

const getData = async () =>{
const res = await axios.get(`https://jsonplaceholder.typicode.com/users`)

setdata( res.data.map(row =>({id:row.id,name:row.name,emailss:row.email,address:row.address.city})) );
}

const [isModalVisible, setIsModalVisible] = useState(false);

const showModal = () => {
setIsModalVisible(true);
};

const handleOk = () => {
setIsModalVisible(false);
};

const handleCancel = () => {
setIsModalVisible(false);
};

return (

<Layout>
<Header>Header 1</Header>
<Content style={{padding:50}}>
<Row>
<Col span={3}/>
<Col span={18}>
<Table dataSource={data} columns={columns} />
</Col>
<Col span={3}/>
</Row>
</Content>
<Modal title="Basic Modal" visible={isModalVisible} onOk={handleOk} onCancel={handleCancel}>
<p>Some contents...</p>
<p>Some contents...</p>
<p>Some contents...</p>
</Modal>
<Footer></Footer>
</Layout>

);

}

export default UsersList;

要在模式中显示数据,请检查以下代码

用户列表.js

import React , {useState , useEffect } from 'react'
import Layout, { Header, Content, Footer } from 'antd/lib/layout/layout';
import { Table, Row, Col } from 'antd';
import axios from 'axios';
import 'antd/dist/antd.css';
import { Modal, Button } from 'antd';
import Example from './NewUserForm';

const UsersList = () =>{
const [data, setdata] = useState([]);
const [modaldata, setmodaldata] = useState([]);

const columns = [
{
title: 'Name',
dataIndex: 'name',
key: 'uname',
},
{
title: 'Email',
dataIndex: 'emailss',
key: 'uemail',
},
{
title: 'Address',
dataIndex: 'address',
key: 'uaddress',
},
{
title: 'Edit User',
dataIndex: 'id',
key: 'id',
render: (index, record) => (
<Button type="primary" onClick={() => showModal(record)}>
Edit
</Button>
),
},
];

useEffect(() => {
getData();
}, []);

const getData = async () => {
const res = await axios.get(`https://jsonplaceholder.typicode.com/users`);
setdata(
res.data.map((row) => ({
id: row.id,
name: row.name,
emailss: row.email,
address: row.address.city,
}))
);
};

const [isModalVisible, setIsModalVisible] = useState(false);

const showModal = (record) => {
console.log(record);
setmodaldata(record);
setIsModalVisible(true);
};

const handleOk = () => {
setIsModalVisible(false);
};

const handleCancel = () => {
setIsModalVisible(false);
};

return (
<Layout>
<Header>Header 1</Header>
<Content style={{ padding: 50 }}>
<Row>
<Col span={3} />
<Col span={18}>
<Table dataSource={data} columns={columns} />
</Col>
<Col span={3} />
</Row>
</Content>
<Modal
title="Basic Modal"
visible={isModalVisible}
onOk={handleOk}
onCancel={handleCancel}
>
<p>Name: {modaldata.name}</p>
<p>Email: {modaldata.emailss}</p>
<p>Address: {modaldata.address}</p>
</Modal>
<Footer></Footer>
</Layout>
);
};

export default UsersList;

Screenshot

关于reactjs - 如何在表格行按钮上打开模式并在模式中访问表格数据,在 AntD Reactjs 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71507999/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com