React Ant d Modal 组件循环无法将项目数据呈现为 jsx 内容

React Ant d Modal Component looping unable to render item data as jsx contents

大家好,我正在使用 React Js 'Ant design 模态组件' https://ant.design/components/modal/ ,onclick of a button the modal should open and it should show content of each individual user to their respective unique id ,but i am getting same id's on all modal of onclick .please help me out,onclick of button i should get their respective id in the modal.Here is my CodesandboxLink also https://codesandbox.io/s/magical-nash-3h4yk?file=/src/Users.js

import React from "react";
import axios from "axios";
import { Button, Modal } from "antd";
import "antd/dist/antd.css";
import "./Users.css";

class Users extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      usersList: [],
      visible: false,
    };
  }
  componentDidMount() {
    axios.get("/Test.json").then((res) => {
      this.setState({ usersList: res.data.members });
    });
  }
  showModal = () => {
    this.setState({
      visible: true,
    });
  };

  handleCancel = (e) => {
    console.log(e);
    this.setState({
      visible: false,
    });
  };
  render() {
    console.log(this.state.usersList);

    const users = this.state.usersList.map((item) => (
      <div key={item.id} className="users_list">
        <li>{item.real_name}</li>

        <Button type="primary" onClick={this.showModal}>
          Open Modal
        </Button>
        <Modal
          title="Users Activity"
          visible={this.state.visible}
          onCancel={this.handleCancel}
          footer={null}
        >
          {item.id}
        </Modal>
      </div>
    ));

    return (
      <div>
        <h1 className="user_heading">Users</h1>
        <ul className="users_list_names">{users}</ul>
      </div>
    );
  }
}

export default Users;


这是我的 CodesandboxLink https://codesandbox.io/s/magical-nash-3h4yk?file=/src/Users.js

实际上,您需要将当前项目存储在单独的变量中,以便您可以传递给模型并正确使用它,检查代码和框:https://codesandbox.io/s/awesome-shamir-ots4e?file=/src/Users.js

import React from "react";
import axios from "axios";
import { Button, Modal } from "antd";
import "antd/dist/antd.css";
import "./Users.css";

class Users extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      usersList: [],
      visible: false,
      currentItem: {}
    };
  }
  componentDidMount() {
    axios.get("/Test.json").then(res => {
      this.setState({ usersList: res.data.members });
    });
  }
  showModal = item => {
    this.setState({
      visible: true,
      currentItem: item
    });
  };

  handleCancel = e => {
    console.log(e);
    this.setState({
      visible: false
    });
  };
  render() {
    console.log(this.state.usersList);

    const users = this.state.usersList.map(item => (
      <div key={item.id} className="users_list">
        <li>{item.real_name}</li>

        <Button type="primary" onClick={() => this.showModal(item)}> {/*pass item here */
          Open Modal
        </Button>
        <Modal
          title="Users Activity"
          visible={this.state.visible}
          onCancel={this.handleCancel}
          footer={null}
        >
          {this.state.currentItem.id}
        </Modal>
      </div>
    ));

    return (
      <div>
        <h1 className="user_heading">Users</h1>
        <ul className="users_list_names">{users}</ul>
      </div>
    );
  }
}

export default Users;