Material UI 自动完成未在 React 应用程序中的远程数据源上呈现
Material UI AutoComplete not rendering on remote dataSource in React application
我正在使用 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'],
....
}
谁能帮帮我?
根据 this 问题和提到的评论,您只需为所有内容传递 true 即可跳过过滤器功能。
<AutoComplete
floatingLabelText='Enter test'
dataSource={this.state.dataSource}
onUpdateInput={(val) => this.searchSomething(val)}
fullWidth={true}
filter={(searchText, key) => true} />
我正在使用 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'],
....
}
谁能帮帮我?
根据 this 问题和提到的评论,您只需为所有内容传递 true 即可跳过过滤器功能。
<AutoComplete
floatingLabelText='Enter test'
dataSource={this.state.dataSource}
onUpdateInput={(val) => this.searchSomething(val)}
fullWidth={true}
filter={(searchText, key) => true} />