首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从单击按钮时重置

从单击按钮时重置
EN

Stack Overflow用户
提问于 2020-10-03 15:58:07
回答 3查看 51关注 0票数 0

我正在尝试重置单击按钮时的值,但无法执行此操作。不知道问题出在哪里。

这是我在form中的一个字段:

代码语言:javascript
复制
       <Grid item xs={5} md={5} lg={5}>
          <InputLabel htmlFor="outlined-adornment-fName" required>
            First Name
          </InputLabel>
          <FormControl
            className={classes.formControl}
            variant="outlined"
            size="small"
          >
            <OutlinedInput
              id="outlined-adornment-fName"
              placeholder="First Name"
              defaultValue={firstName}
            />
          </FormControl>
        </Grid>

这就是我设置表单值的方式:

代码语言:javascript
复制
const [firstName, setFirstName] = React.useState('M');

这是我的重置函数:

代码语言:javascript
复制
const handleClick = () => {
    setTimeout(() => {
      setFirstName('');
    }, 1000);
  };

这是我的重置按钮:

代码语言:javascript
复制
            <Button
              variant="contained"
              color="primary"
              onClick={handleClick}
              classes={{ root: classes.textTran }}
              style={{
                display: 'flex',
                width: '35%',
                textTransform: 'none',
                borderRadius: 20,
              }}
            >
              Reset
         </Button>
EN

回答 3

Stack Overflow用户

发布于 2020-10-03 16:14:39

代码语言:javascript
复制
const handleClick = () => {
    setTimeout(() => {
      setFirstName(() => "");
    }, 1000);
  };

试一试

票数 1
EN

Stack Overflow用户

发布于 2020-10-03 16:45:13

您只向OutlinedInput提到了defaultValue。添加valueonChange属性,以便反映新模型的更改。您可以删除setTimeout函数。

代码语言:javascript
复制
const handleClick = () => {
    setFirstName('');
}

代码语言:javascript
复制
<OutlinedInput
    id="outlined-adornment-fName"
    placeholder="First Name"
    value = { firstName }
    onChange={e => setFirstName(e.target.value)} />

票数 1
EN

Stack Overflow用户

发布于 2020-10-03 16:52:54

我认为这里的问题是,您将intput的默认值设置为state变量,但在运行时,输入字段不会跟踪状态。必须将输入的值设置为相应的状态变量,并且必须设置onChange-call才能更新该特定变量。请看下面的primitve示例,

代码语言:javascript
复制
const DemoForm = () => {
  const [value, setValue] = React.useState('')

  const handleChange = (event) => setValue(event.target.value)  
  const handleReset = () => setValue('')

  return(
    <>
      <form>
        <input value={value} onChange={handleChange} />
      </form>
      <button onClick={handleReset} >Reset</button>
    </>
}

这将导致状态在每次输入更改时更新,并使用更新的值重新呈现输入,当单击reset按钮时发生事件,因为它也更改了值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64181984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档