当前位置: 首页 > 知识库问答 >
问题:

ReactJS:仅打开地图项的选定模式弹出窗口

路阳华
2023-03-14

我正在尝试将react-modal添加到映射数组的项中。当我单击映射项上的onClick事件时,它会同时打开所有的情态动词。我想要的是顶部开放选择的模式一次。

在这里,我将映射Employee的数组,并使用onClick模式为每个数组添加一个按钮。

null

const employeeInfo = this.props.employees.map(employee => (
      <tr key={employee.employeeId} className="employee_heading">
        <td>{employee.name}</td>

        <td className="actions">
          <div className="group">
            <button className="edit" onClick={this.toggleEditEmployeeModal}>
              <i className="fas fa-pencil-alt" />
            </button>
            
            //This is the modal component
            <Modal
              open={this.state.openEditEmployeeModal}
              onClose={this.toggleEditEmployeeModal}
              center
            >
              <EditEmployeeModal />
            </Modal>

          </div>
        </td>
      </tr>
    ));
return (
      <table>
        <thead>
          <tr>
            <th>Name</th>
            <th>Employee Id</th>
            <th>Job Title</th>
            <th>Date Of Joining</th>
            <th>Employee Info</th>
            <th>Actions</th>
          </tr>
        </thead>
        <tbody>{employeeInfo}</tbody>
      </table>
    );
  }

null

下面是切换模型的状态

null

state = {
  openEditEmployeeModal: false
};

toggleEditEmployeeModal = () => {
  this.setState({
    openEditEmployeeModal: !this.state.openEditEmployeeModal
  });
};

null

现在,如果我点击按钮,它将打开所有的模式,但我只想打开一个选定的模式。任何帮助都将不胜感激。

共有2个答案

韩瀚
2023-03-14

我通常把它们分成组件

const employeeInfo = this.props.employees.map(employee => (
    <Employee employee=employee />
    ));

class Employee extends PureComponent {
   render(){
      constructor(props){
      super(props);
      this.state={visible:false}
     }
 toggleEditEmployeeModal(){
   this.setState({
   visible = !this.state.visible
      })
   }
  var employee = this.props.employee

    return(
      <tr key={employee.employeeId} className="employee_heading">
        <td>{employee.name}</td>

        <td className="actions">
          <div className="group">
            <button className="edit" onClick={this.toggleEditEmployeeModal}>
              <i className="fas fa-pencil-alt" />
            </button>

            //This is the modal component
            <Modal
              open={this.state.visible}
              onClose={this.toggleEditEmployeeModal}
              center
            >
              <EditEmployeeModal />
            </Modal>

          </div>
        </td>
      </tr>
)
    }

}

如果你还有其他问题请告诉我

夏侯兴学
2023-03-14

三种方式:

  1. 呈现“Employee”组件的映射,该组件具有自己的状态,以便模式适合每个员工。
  2. 在父组件上使用模式呈现当前映射,然后单击employee后,使用该employee上下文设置模式状态。
  3. 有一个基于键的状态,每个员工索引都是键(state[employeeId]),这样您就可以分别更改每个索引。
 类似资料:
  • 问题内容: 我有一个显示项目列表的应用程序。 用户可以单击一个项目,然后在模式弹出窗口(居中的DIV,使用JavaScript显示)中查看其详细信息。我需要在该弹出窗口上有一个按钮,该按钮将允许用户仅打印模式弹出窗口的内容。 这是针对仅需要在IE7 +中运行的内部应用程序的。当用户单击模式弹出窗口上的“打印”按钮时,该项目的状态将更改为“已打印”(出于内部业务原因…)。 我正在使用ASP.NET和

  • 我有一个jsp页面,其中有“打印”按钮。我想在这个按钮上创建链接,它将打开新的弹出窗口,其中包含我的可打印页面(jsp文件),其模型与父页面相同。我可以做一些点击动作。但我不知道如何呈现可打印的jsp。我使用Spring MVC portlet

  • 问题内容: 我正在尝试使用javafx在webview中打开网页。单击超链接后,此网页将打开一个新的弹出窗口。 我如何打开新的弹出窗口,当尝试在默认Web浏览器(例如chrome,IE)中打开同一网页时,它们正在打开弹出窗口。 为了创建弹出窗口,我使用以下代码。 问题答案: 您需要自己创建WebView弹出窗口,并从回调中提供WebEngine。如果需要新窗口,请使用该WebView创建一个新的舞

  • 问题内容: 从使用ReactJS的prop验证功能开始,正如文档所说,出于性能原因,该功能仅在“开发模式”下有效。 React似乎正在验证我注释的特定组件的属性,但我不记得显式打开“开发模式”。 我尝试搜索如何触发/切换开发模式,但是没有任何运气。 问题答案: 对方的回答假设您使用外部预建的文件从反应,而正确的,是大多数人不会如何去或 应该 消耗作出反应,一个包。而且,在这一点上,大多数每个Rea

  • 说得更清楚一点,基本上我要做的就是像亚马逊一样 将有一堆产品和一旦你点击产品,只有该产品和它的细节将显示在弹出的模式。 在我的例子中,我在一个数组中存储了3个数据,我把它映射出来,创建了3div和3modal弹出窗口,每个窗口中都有按钮。 一旦我点击第一个div的按钮,我希望模式是打开的第一个div只。 但现在当我点击按钮时,所有3个模式弹出。 我是React的新手,我可以在JQuery和Java

  • 问题内容: 我通过window.open打开了一个弹出窗口。使用JavaScript打开,我想在关闭此弹出窗口时刷新父页面。(onclose事件?)我该怎么办? 问题答案: 您可以使用“ window.opener”访问父窗口,因此,在子窗口中编写如下内容: