reactjs - 从数据库中删除某些内容时如何打开物化确认模式
问题描述
目前,我有一个显示数据库中所有文档的视图。每个都有一个按钮,用于触发要从数据库中删除的文档。
理想情况下,我想打开一条模式消息(使用 Materialize)以确保应该删除。
我知道我可以为每个元素设置一个模态,但这似乎是多余的,而且太多了。我希望流程来自:
button -> delete
到:
button -> confirm -> delete
我希望通过更改按钮的 onClick 以打开模式并能够通过确认按钮的操作来实现这一点
按钮代码当前如下所示:
<button
className="btn"
onClick={() => {handleClick(category._id);}}
>
Delete
</button>
每个按钮的当前 onClick 处理程序如下:
const handleClick = id => {
this.props.deleteCategory(id);
};
我是 React/Redux 和 Materialize 的新手,因此我们将不胜感激,如果需要更多信息,请告诉我 :)
谢谢,詹姆斯
解决方案
好的,所以我自己找到了解决方案,由于我在网上找不到太多关于如何做到这一点的其他内容,所以我想我也会分享解决方案。
所以,我首先安装了 react-materialize 并创建了一个组件来保存模态并渲染模态。
我将按钮单击功能替换为更新当前组件状态的功能,如下所示:
const handleClick = category => {
this.setState({
categoryClicked: category,
modalOpen: true
});
};
然后,我使用如下道具将包含模型的组件绑定到此状态:
<ConfirmDeletion
onClickYes={null}
onClickNo={null}
name={this.state.categoryClicked.name}
open={this.state.modalOpen}
actions={[
<button
onClick={modalNo}
className="modal-close waves-effect waves-green btn-flat"
>
No
</button>,
<button
onClick={modalYes}
className="modal-close waves-effect waves-green btn-flat"
>
Yes
</button>
]}
/>
请注意,动作是 JSX 元素的列表,应该是模式上的按钮。我还创建了单击事件处理程序来更新状态(并在“是”情况下从数据库中删除),如下所示:
const modalYes = () => {
this.props.deleteCategory(this.state.categoryClicked._id);
this.setState({
modalOpen: false
});
};
const modalNo = () => {
this.setState({
modalOpen: false
});
};
为了完整起见,这是包装模态的组件,以防将来对任何人有用:
import React, { Component } from "react";
import { Modal } from "react-materialize";
class ConfirmDeletion extends Component {
render() {
const { name, open, actions } = this.props;
return (
<Modal
id="confirmDeletion"
open={open}
actions={actions}
header="Are you sure?"
>
<div className="modal-content">
<p>
Are you sure you want to do delete '{name}'? It cannot be undone.
</p>
</div>
</Modal>
);
}
}
export default ConfirmDeletion;
推荐阅读
- android - GraphMethodException:errorCode:100,subErrorCode:33,使用最新的 Firebase UI Auth 版本时
- python - Python:用字符串替换数值
- r - 在两行以上使用上标时修复图例标题 - R ggplot2
- sql - 在 JDBC 中创建触发器以按顺序自动递增 id
- python - 根据值比较从数据框中删除行时出错
- reactjs - 由于实施限制,带有 typescript 的 CRA 2.0 覆盖了我的 tsconfig.json
- python - 显式创建字典列表与使用循环迭代为 lambda 表达式创建字典
- php - 统计用户在我的聊天中发送的消息
- javascript - 在某个点使用 ExecCommand 插入?
- javascript - Express.js - 将路由导入子路由