【问题标题】:How to clear a material-ui search input using a button如何使用按钮清除 Material-ui 搜索输入
【发布时间】:2021-08-29 00:40:32
【问题描述】:

处理一个涉及反应材料-ui 表的教程 atm,该表也有一个搜索输入文本字段。我要添加的是一个按钮,该按钮将重置表格报告,但也会清除搜索输入文本字段。

这是我遇到问题的搜索文本字段的清除。

他们将此代码用作名为 Controls.input 的单独组件库:

从“反应”导入反应 从“@material-ui/core”导入 { TextField };

export default function Input(props) {

    const { name, label, value,error=null, onChange, ...other } = props;
    return (
        <TextField
            variant="outlined"
            label={label}
            name={name}
            value={value}
            onChange={onChange}
            {...other}
            {...(error && {error:true,helperText:error})}
        />
    )
}

主要搜索代码如下,我还添加了一个按钮

            <Controls.Input
                id="name"
                label="Search Name"
                className={classes.searchInput}
                InputProps={{
                    startAdornment: (<InputAdornment position="start">
                        <Search />
                    </InputAdornment>)
                }}
                onChange={handleSearch}
            />
            <Button
                onClick={handleClear}
                className="materialBtn"
            >
                Clear
            </Button>

此时,我不确定如何引用/定位搜索输入字段作为handleClear 函数的一部分,以便清除其内容?

const handleClear = () => {
    ????
}    

我需要使用useState()吗?

【问题讨论】:

  • 您必须清除文本输入的值。您可以使用State 保留值并在handleClear 函数中清除它。
  • @BhaskarJoshi - 抱歉,我如何访问文本输入的值才能使用 useState?

标签: javascript reactjs material-ui use-state


【解决方案1】:

您必须将值放入状态是正确的。根据您提供的内容,您的状态似乎需要在您的父组件中。所以这样的事情应该可以工作

import { useState } from 'react'

const ParentComponent = () => {
    const [value, setValue] = useState('')

    const handleClear = () => {
        setValue('')
    }

    const handleSearch = (event) => {
        setValue(event.target.value)
    }

    return (
        <>
            <Controls.Input
                id="name"
                label="Search Name"
                className={classes.searchInput}
                value={value}
                onChange={handleSearch}
                InputProps={{
                    startAdornment: (
                        <InputAdornment position="start">
                            <Search />
                        </InputAdornment>
                    ),
                }}
                
            />
            <Button onClick={handleClear} className="materialBtn">
                Clear
            </Button>
        </>
    )
}

【讨论】:

  • value={value} 似乎有问题,因为这不允许我在搜索输入字段中输入任何值,只是保持为空。有什么想法吗?
  • 我对答案做了一个小的编辑。但是您无法输入任何内容的原因是因为现在值来自值状态。因此,您需要做的是确保 onChange 正常工作。我建议先删除输入组件上的value={value} 行,然后在handleSearch 函数中放置一个console.log 以确保正在更改值
猜你喜欢
  • 2020-07-29
  • 1970-01-01
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多