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 中的值

Material-UI 中的 Autocomplete 组件不会导致任何渲染

在 Material-ui Autocomplete 组件上设置文本颜色、轮廓和填充