Material UI AutoComplete 不在 React 应用程序中的远程数据源上呈现
Posted
技术标签:
【中文标题】Material UI AutoComplete 不在 React 应用程序中的远程数据源上呈现【英文标题】:Material UI AutoComplete not rendering on remote dataSource in React application 【发布时间】:2016-09-16 09:44:37 【问题描述】:我正在使用 React 15.0.1 和 Material-UI 0.15.0。我正在尝试通过 React 呈现自动完成功能。这是我的代码:
import React from 'react';
import SomeService from '../../../services/SomeService';
import AutoComplete from 'material-ui/AutoComplete';
class SearchInput extends React.Component
constructor (props)
super(props);
this.state =
dataSource: []
;
searchSomething (value)
if (value.length)
SomeService.fetchAutocomplete(searchQuery: value)
.then((res) => this.handleSuccess(res.data),
(err) => this.handleFailure(err));
else
this.setState(
dataSource: []
);
;
handleSuccess (response)
this.setState(dataSource: response.slice(0, 10));
handleFailure (err)
console.log(err);
render ()
return (
<div>
<AutoComplete
floatingLabelText='Enter test'
dataSource=this.state.dataSource
onUpdateInput=(val) => this.searchSomething(val)
fullWidth=true />
</div>
);
export default SearchInput;
假设我得到一个带有数据的响应对象: [...] // 一个东西数组。 这没有被渲染。
响应对象类似于:
reponse:
....,
data: ['Apple', 'Banana', 'Orange'],
....
谁能帮帮我?
【问题讨论】:
你能展示一个对象的例子吗?属性的名称.. 响应对象?response: ...., data: ['Apple', 'Banana', 'Orange', ....], .....
如果您在render
函数中添加控制台,您可以看到这些值对吗?
另外,您键入的每个字符都会调用 onUpdateInput
函数。所以您在执行许多请求时可能会遇到问题。-例如,我建议您在 500 毫秒内对其进行去抖动
@AndréJunges 是的,我得到了这些值。让我试试去抖动。
【参考方案1】:
根据this 问题和提到的评论,您只需要通过为所有内容传递 true 来跳过过滤器功能。
<AutoComplete
floatingLabelText='Enter test'
dataSource=this.state.dataSource
onUpdateInput=(val) => this.searchSomething(val)
fullWidth=true
filter=(searchText, key) => true />
【讨论】:
好的。让我试试这个。 @ni8mare 这是一个修复吗? 是的,这修复了它。谢谢。以上是关于Material UI AutoComplete 不在 React 应用程序中的远程数据源上呈现的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Material-ui 中的 onFocus 上隐藏 Autocomplete 的标签?
将 Material-UI 的 Autocomplete 组件与 Formik 一起使用
Material-ui <Autocomplete /> getOptionLabel - 将空字符串作为值传递
获取 React Material-UI Autocomplete 中的值