如何使用按钮清除 material-ui 搜索输入
How to clear a material-ui search input using a button
正在制作一个涉及反应 material-ui tables 的教程 atm,它也有一个搜索输入文本字段。我想添加的是一个按钮,它将重置 table 报告,但也会清除搜索输入文本字段。
我遇到的问题是清除搜索文本字段。
他们将此代码用作名为 Controls.input:
的单独组件库
从 'react' 导入 React
从“@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>
此时,我不确定如何 reference/target 搜索输入字段作为 handleClear
功能的一部分,以便清除其内容?
const handleClear = () => {
????
}
我需要使用 useState()
吗?
您必须将值放入状态,这是正确的。根据您提供的内容,您的状态似乎需要在您的父组件中。所以像这样的东西应该可以工作
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>
</>
)
}
正在制作一个涉及反应 material-ui tables 的教程 atm,它也有一个搜索输入文本字段。我想添加的是一个按钮,它将重置 table 报告,但也会清除搜索输入文本字段。
我遇到的问题是清除搜索文本字段。
他们将此代码用作名为 Controls.input:
的单独组件库从 'react' 导入 React 从“@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>
此时,我不确定如何 reference/target 搜索输入字段作为 handleClear
功能的一部分,以便清除其内容?
const handleClear = () => {
????
}
我需要使用 useState()
吗?
您必须将值放入状态,这是正确的。根据您提供的内容,您的状态似乎需要在您的父组件中。所以像这样的东西应该可以工作
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>
</>
)
}