Javascript 如何在React中为删除按钮添加警告/通知?
Javascript 如何在React中为删除按钮添加警告/通知?,javascript,reactjs,redux,react-final-form,Javascript,Reactjs,Redux,React Final Form,ImagesUpload.jsx-->表示组件 deleteImageWarning.jsx-->通知组件 index.js-->其中我导出了deleteImageWarning函数 目标 我想在我的React应用程序中包含一个通知或弹出窗口,提醒用户,并让他们选择取消或确认操作,在本例中,删除工作表上的图像。当用户单击已附加到页面的图像旁边的删除按钮时,应触发此通知 在哪里寻找问题 我写的东西(请看下面)根本不起作用。我觉得validateBeforeDelete功能有问题;我只是想在DOM中
ImagesUpload.jsx
-->表示组件
deleteImageWarning.jsx
-->通知组件
index.js
-->其中我导出了deleteImageWarning函数
目标
我想在我的React应用程序中包含一个通知或弹出窗口,提醒用户,并让他们选择取消或确认操作,在本例中,删除工作表上的图像。当用户单击已附加到页面的图像旁边的删除按钮时,应触发此通知
在哪里寻找问题
我写的东西(请看下面)根本不起作用。我觉得validateBeforeDelete
功能有问题;我只是想在DOM中使用正确的值返回通知函数。此外,我缺少在deleteImageWarning组件的内容部分中编写的内容
简要概述
让您了解一下,在处理通知之前,按钮的删除功能工作得非常好。ImagesUpload文件有一个容器,因此,我们可以声明ImagesUpload.jsx
文件是表示组件,还有一个ImagesUploadContainer.jsx
文件充当表示组件的容器组件
问题
问题是我不知道如何将我在ImagesUpload.jsx
文件中声明的delete函数传递给deleteMageWarning.jsx
组件。这就是我在deleteImageWarning组件的内容常量中缺少的内容。它是否与我的render()
函数中声明的常量有关
ImagesUpload.jsx
//importing the deleteImageWarning function
import {
deleteImageWarning,
} from '../common/notifications';
//this is the function that deletes the image with the required values
async handleDeleteImage (jobsheetId, imageId) {
this.props.deleteImage({jobsheetId: jobsheetId, imageId: imageId});
}
//this is a validate function that is supposed to trigger the deleteImageWarning function
validateBeforeDelete = (jobsheetId, imageId) => {
return deleteImageWarning(this.notificationDOMRef.current, () => this.handleDeleteImage(jobsheetId, imageId));
}
render() {
const { ... } = this.props;
const { ... } = this.state;
return (
//TO BE AWARE! the following delete button with an onClick function has been written using React final form's syntax
...
<StyledSectionColRight>
<Button red type="button" onClick={() => this.validateBeforeDelete(id, image.id)}>Delete</Button>
</StyledSectionColRight>
...
);
}
export default ImagesUpload;
deleteImageWarning.jsx
import React from 'react';
import styled from 'styled-components';
import { Button, ButtonInverted } from '../button';
const StyledNotification = styled.div`
background: var(--white);
padding: var(--spacer-m);
`;
const StyledMessage = styled.p`
font-size: var(--font-s);
line-height: var(--lineHeight-s);
margin: 0 0 var(--spacer-l) 0;
`;
const Content = ({ ????? }) => (
<StyledNotification>
<StyledMessage>
Are you sure you want to delete this image? This process cannot be undone.
</StyledMessage>
<Button type="button" red onClick={?????}>Confirm</Button>
<ButtonInverted type="button">Cancel</ButtonInverted>
</StyledNotification>
);
const deleteImageWarning = (node, ?????) => {
node.addNotification({
content: <Content ?????={?????} />,
type: "info",
title: "",
message: "",
insert: "top",
container: "top-center",
animationIn: ["animated", "fadeIn"],
animationOut: ["animated", "fadeOut"],
dismissable: { click: true },
width: 400
});
}
export default deleteImageWarning;
从“React”导入React;
从“样式化组件”导入样式化;
从“../Button”导入{Button,ButtonInverted};
const StyledNotification=styled.div`
背景:var(--白色);
填料:var(--m);
`;
const StyledMessage=styled.p`
字体大小:var(--font-s);
线高:var(--lineHeight-s);
裕度:0 var(--l)0;
`;
常量内容=({?????})=>(
是否确实要删除此图像?此过程无法撤消。
证实
取消
);
常量deleteImageWarning=(节点,???)=>{
node.addNotification({
内容:,
输入:“信息”,
标题:“,
消息:“”,
插入:“顶部”,
容器:“顶部中心”,
动画输入:[“动画”、“fadeIn”],
动画输出:[“动画”、“淡出”],
可撤销:{click:true},
宽度:400
});
}
导出默认deleteImageWarning;
非常明显,我在代码中添加了几个问号,以突出我不知道该写什么的地方。我认为您的思维方式有点(不是太苛刻)错误,如果我理解错误,请纠正我。
内容应在何处呈现?我看不到它会在哪里
我要做的是创建一个新组件(而不是一个函数),并仅当状态(例如,state={…,isdeleting=true}
)中的标志变为true时才呈现它。您还可以在状态中存储要删除的映像的信息,并将其传递给组件:
//[prev. Code in ImagesUpload.jsx]
{ this.state.isdeleting ? <DeletImgWaring handleDeleteImage = {this.handleDeleteImage} imgInformation={//e.g. this.state.imgToBeDelInfo}
/[ImagesUpload.jsx中的上一个代码]
{this.state.isdeleting?我认为你的思维方式有点(不是太苛刻)错误,如果我理解错误,请纠正我。应该在哪里呈现内容
呢?我看不到它会在哪里
我要做的是创建一个新组件(而不是一个函数),并仅当状态中的标志(例如,state={…,isdeleting=true}
)变为true时才渲染它。您还可以在状态中存储要删除的图像的信息,并将其传递给组件:
//[prev. Code in ImagesUpload.jsx]
{ this.state.isdeleting ? <DeletImgWaring handleDeleteImage = {this.handleDeleteImage} imgInformation={//e.g. this.state.imgToBeDelInfo}
/[ImagesUpload.jsx中的上一个代码]
{this.state.isdeleting?对于详细的答案,代码太多了。我猜您正在寻找类似这样的onClick={e=>window.confirm('sure?')?someHandler(e):e.preventDefault()}
我相信我只考虑了一些重要的细节。如果你不知道文件是什么或是做什么的,请告诉我,我会毫不犹豫地向你解释。关于你的答案,这其实不是我想要的。我想要实现的是添加通知,同时能够在新文件中自定义弹出窗口粗略的反应/Redux。类似于他们在notificationOpts const中所做的:有太多的代码用于详细的回答。我猜您正在寻找类似以下内容的onClick={e=>window.confirm('sure?')?someHandler(e):e.preventDefault()}
我相信我只考虑了一些重要的细节。如果你不知道文件是什么或是做什么的,请告诉我,我会毫不犹豫地向你解释。关于你的答案,这其实不是我想要的。我想要实现的是添加通知,同时能够在新文件中自定义弹出窗口粗略的反应/重复。类似于他们在notificationOpts const中所做的: