如何在 AntD Reactjs 中打开表格行按钮上的模态并访问模态中的表格数据

2024-01-22

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

“showModal”未定义

版本:

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

我的数据来自-https://jsonplaceholder.typicode.com/users 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 inside Userlist函数,修复“showModal”未定义错误

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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 AntD Reactjs 中打开表格行按钮上的模态并访问模态中的表格数据 的相关文章

随机推荐

  • WPF 2D 高性能图形

    基本上 我想要 WPF 中的 GDI 类型功能 其中我可以将像素写入位图并通过 WPF 更新和显示该位图 请注意 我需要能够通过响应鼠标移动更新像素来动态设置位图动画 我读到 InteropBitmap 非常适合此目的 因为您可以写入内存中
  • 什么是 LINQ 提供程序? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • TypeScript 可以在没有定义文件的情况下与 jQuery 交互吗?

    我一直在尝试了解这个新的 TypeScript 东西 并且我对某些事情有点好奇 它仍然可以与现有的 javascript 框架 如 jQuery 一起使用吗 without是否需要包含所有这些接口的定义文件 我一直在尝试手动测试这一点 但到
  • 尝试向 Web 服务发送 SOAP 请求时出现 WS 安全错误

    这是我使用肥皂 UI 发送的 SOAP 请求 但收到一条错误消息 消息不符合配置的策略
  • Puppeteer:Element.hover() 不存在

    我正在使用 puppeteer 从网站上抓取一些图像以及其他一些数据 要更改图像 我需要将鼠标悬停在列表项上 我不断遇到有关 hover 的文档 但没有成功 然而 click 非常适合我的抓取的另一部分 const pptr require
  • Android 关闭键盘

    按下按钮时如何关闭键盘 您想禁用或关闭虚拟键盘吗 如果您只想关闭它 您可以在按钮的单击事件中使用以下代码行 InputMethodManager imm InputMethodManager getSystemService Context
  • UserWarning:pyarrow.open_stream 已弃用,请使用 pyarrow.ipc.open_stream 警告

    我在跑步spark 2 4 2本地通过pyspark用于 NLP 中的 ML 项目 Pipeline 中的部分预处理步骤涉及使用pandas udf功能优化通过pyarrow 每次我使用预处理的 Spark 数据框进行操作时 都会出现以下警
  • 安卓倒计时

    我想在android中写一个倒计时 从3开始计数到0 就像最初3出现然后消失 2出现等等 我进行了很多搜索 但找不到任何好的样本 你能帮我看看我该怎么办吗 使用倒计时器 例如 import android os CountDownTimer
  • 金字塔 1.3 和 Google 应用引擎 1.7

    我设法使 Pyramid 1 2 WSGI 应用程序在 Google App Engine SDK 1 7 上运行 然而 我当前的项目使用了几个新的 Pyramid 1 3 功能 并且我陷入了 WebOb 版本问题 这是错误消息 Versi
  • 无法联系 reCAPTCHA。检查您的连接并重试

    我正在使用react google invisible recaptcha 但当页面加载时它不起作用 它会显示 无法联系 reCAPTCHA 请检查您的连接并重试 之类的警报 即使互联网速度更快 我怎样才能使用invisible reCAP
  • VS2010 中缺少 ws2_32.lib。该怎么办?

    我正在尝试着手 Windows 套接字编程 我知道你必须 include winsock2 h然后链接到ws2 32 lib 问题是我没有ws2 32 lib在我的 Visual Studio 2010 终极版本中 我应该做什么才能让它启动
  • 在Matlab中将导数值保存在ode45中

    我正在模拟一个带有质量弹簧和双摆的 有点奇怪 系统的运动方程 我有一个质量矩阵和函数 f x 并调用 ode45 来求解 M x f x t 我有5个状态变量 q QDot phi phiDot r rDot 删除了 Q 因为没有任何东西依
  • C 中的连续空格删除 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 文本文件包含一堆字符 文件中没有制表
  • Javacv Blob 检测

    我想在我的应用程序中使用一些用 Java 编写的斑点检测 因此使用JavaCV代替OpenCV 我发现很多课程 例如 SimpleBlobDetector CvBlobDetector CvBlob 但我找不到任何教程或演示 示例代码来在
  • UINavigationController:相反方向弹出视图控制器

    我正在尝试打电话 self navigationController popViewControllerAnimated YES 但使动画从右向左滑动而不是从左向右滑动 有什么简单的方法可以做到这一点吗 我想回到之前的观点 任何帮助表示赞赏
  • 如何向 R matplot 添加颜色匹配的图例

    我使用 matplot 在图表上绘制几条线 matplot cumsum as data frame daily pnl type l 这给了我每行的默认颜色 这很好 但我现在想添加一个反映相同颜色的图例 我怎样才能实现这一点 请注意 我首
  • 为什么Flow需要对导出函数的参数进行注释?

    以下代码 流动游乐场 https flowtype org try 0PQKgBAAgZgNg9gdzCYAoVUCuA7AxgFwEs5swBDACgAcBKMAbwF9UBbOAE0xgFMA6bgB5U4AJ3wBnMAF5yQA f
  • 将 CollectionView Item VisualElement 的 VisualState 传递给其子 VisualElements

    我遇到以下情况 CollectionView 每一项都是Border 包含其他控件 选择后 边框的 VisualState 更改为已选择 然而 子控件的状态没有改变 有没有一种简单的方法可以将这些 VisualStates 链接 传递给所有
  • 使用递推方程的程序的时间复杂度

    我想使用递归方程找出程序的时间复杂度 那是 int f int x if x lt 1 return 1 else return f x 1 g x int g int x if x lt 2 return 1 else return f
  • 如何在 AntD Reactjs 中打开表格行按钮上的模态并访问模态中的表格数据

    我在 antd 表中显示用户数据 并在表中为每行创建了编辑按钮来访问每行记录 我想在 编辑 按钮单击时打开模态并在模态中获取相应的行数据 但无法 因为它给出了错误 showModal 未定义 版本 antd 4 18 9 axios 0 2