【发布时间】:2020-06-15 05:22:17
【问题描述】:
我的下拉菜单(材料 UI 选择)显示“搜索依据”,然后我们单击它,它会给出一个列表。当我选择一个选项时,我想存储该选项并将“搜索依据”更改为所选选项。
export default function UserSearchPage(){
const [criteria, setCriteria] = useState('');
const [searchItem, setSearchItem] = useState('');
return (
<div>
<div className='main-content'>
<Select
value = {criteria}
onChange={value => {
setCriteria(value);}}
displayEmpty>
<MenuItem disabled value="">
<em>Search By</em>
</MenuItem>
<MenuItem value={1}>First Name</MenuItem>
<MenuItem value={2}>Last Name</MenuItem>
<MenuItem value={3}>Phone Number</MenuItem>
<MenuItem value={4}>Email</MenuItem>
</Select>
<br></br><br></br>
<SearchBar
value= {searchItem}
onChange={value => {
setSearchItem(value);}}
onRequestSearch={() => console.log('onRequestSearch')}
style={{
margin: '0 auto',
maxWidth: 800
}}
/>
</div>
)
</div>
);
}
在 Select 上使用我当前的 onChange,我在值上收到此错误:
Argument of type 'ChangeEvent<{ name?: string | undefined; value: unknown; }>' is not assignable to parameter of type 'SetStateAction<string>'.
Type 'ChangeEvent<{ name?: string | undefined; value: unknown; }>' is not assignable to type '(prevState: string) => string'.
如果我使用这个 onChange:
onChange={event => setCriteria(event.target.value)}
我收到一个错误:
Argument of type 'unknown' is not assignable to parameter of type 'SetStateAction<string>'.
Type 'unknown' is not assignable to type '(prevState: string) => string'.
我尝试创建一个沙盒,但我不知道如何解决该错误。代码看起来不错,但无法编译: https://codesandbox.io/s/sleepy-buck-5t7bq
【问题讨论】:
-
我没有看到
Select组件的更改处理程序?你的沙盒也坏了。 -
我在尝试
onChange={e => setCriteria(e.target.value)} but that didn't make any difference.@BrianThompson -
与什么没有区别?在给定的代码中,您仅使用
criteria作为选择值 -
因为“搜索依据”仍然没有改变,所以我只是删除了链接,假设它是错误的/无用的@BrianThompson
-
您将 100% 需要 on change 处理程序,猜测菜单项可能不会返回任何内容。如果您可以修复 codepen,我们可能会提供更好的帮助。跨度>
标签: javascript reactjs typescript react-native material-ui