React:如何让提交按钮和文本标签相互通信?
React: How to get submit button and text label to communicate with each other?
我有一个小表格,其中的一个子集如下所示:
<div className={classes.root}>
<Form
onSubmit={onSubmit}
initialValues={{ datasetName: 'dataset.csv', contactEmail: 'johndoe@example.com', uploadFile: 'sample.csv' }}
validate={validate}
render={({ handleSubmit, form, submitting, pristine, values }) => (
<form onSubmit={handleSubmit} noValidate>
...
<Grid item xs={12}>
<Button
variant="contained"
color="primary"
type="submit"
disabled={submitting}
>
Submit
</Button>
</Grid>
<Grid item xs={12}>
<Typography name='subscribeMessage' variant='caption'>You have subscribed!</Typography>
</Grid>
</Grid>
</form>
)}
/>
我也有一个 onSubmit 函数,但我只想要 text/label“您已订阅!”单击按钮后出现。如何让此文本仅在用户单击提交按钮后出现?
作为参考,我的提交函数如下所示:
const onSubmit = async values => {
console.log('Submitting subscribe form!');
console.log('Subscribe form values:', values);
}
我目前只做前端这方面的工作
您可以添加一个内部状态来检查提交并根据它显示提交文本。
const [formSubmitted, setFormSubmitted] = useState(false)
并在提交成功后设置为true
const onSubmit = async values => {
console.log('Submitting subscribe form!');
console.log('Subscribe form values:', values);
setFormSubmitted(true)
}
如果 formSubmitted 为真
,则呈现提交的消息
{formSubmitted && <Grid item xs={12}>
<Typography name='subscribeMessage' variant='caption'>You have subscribed!</Typography>
</Grid>}
我有一个小表格,其中的一个子集如下所示:
<div className={classes.root}>
<Form
onSubmit={onSubmit}
initialValues={{ datasetName: 'dataset.csv', contactEmail: 'johndoe@example.com', uploadFile: 'sample.csv' }}
validate={validate}
render={({ handleSubmit, form, submitting, pristine, values }) => (
<form onSubmit={handleSubmit} noValidate>
...
<Grid item xs={12}>
<Button
variant="contained"
color="primary"
type="submit"
disabled={submitting}
>
Submit
</Button>
</Grid>
<Grid item xs={12}>
<Typography name='subscribeMessage' variant='caption'>You have subscribed!</Typography>
</Grid>
</Grid>
</form>
)}
/>
我也有一个 onSubmit 函数,但我只想要 text/label“您已订阅!”单击按钮后出现。如何让此文本仅在用户单击提交按钮后出现?
作为参考,我的提交函数如下所示:
const onSubmit = async values => {
console.log('Submitting subscribe form!');
console.log('Subscribe form values:', values);
}
我目前只做前端这方面的工作
您可以添加一个内部状态来检查提交并根据它显示提交文本。
const [formSubmitted, setFormSubmitted] = useState(false)
并在提交成功后设置为true
const onSubmit = async values => {
console.log('Submitting subscribe form!');
console.log('Subscribe form values:', values);
setFormSubmitted(true)
}
如果 formSubmitted 为真
,则呈现提交的消息{formSubmitted && <Grid item xs={12}>
<Typography name='subscribeMessage' variant='caption'>You have subscribed!</Typography>
</Grid>}