Javascript React fetch返回未定义的,但在控制台中返回数组

Javascript React fetch返回未定义的,但在控制台中返回数组,javascript,reactjs,fetch,Javascript,Reactjs,Fetch,我正在使用react autosuggest尝试从服务器获取结果 getSuggestions (value) { const escapedValue = escapeRegexCharacters(value.trim()); if (escapedValue === '') { return []; } const regex = new RegExp('^' + escapedValue, 'i'); if (!value) { retur

我正在使用react autosuggest尝试从服务器获取结果

getSuggestions (value) {
  const escapedValue = escapeRegexCharacters(value.trim());

  if (escapedValue === '') {
  return [];
  }

  const regex = new RegExp('^' + escapedValue, 'i');
    if (!value) {
        return Promise.resolve(myArr);
    }
  fetch(`/mypoint`)
    .then((response) => response.json())
    .then((users) => {
    if (users == undefined) {

      return []
    } else {

      return users
    }
    })
  .catch(err => {
    console.log(err)
  })


 }
这会在我登录控制台时从服务器返回用户,没有问题

  onSuggestionsFetchRequested = ({ value }) => {
    this.setState({
      isLoading: false,
      suggestions: this.getSuggestions(value),
    });
  };
但是,当我编写时,它会从上述函数中获得建议值 输入字段中的一个字

属性
建议
自动建议
中标记为需要,但其值为
未定义

我得到的建议是未定义的,即使它控制服务器返回的值

getSuggestions (value) {
  const escapedValue = escapeRegexCharacters(value.trim());

  if (escapedValue === '') {
  return [];
  }

  const regex = new RegExp('^' + escapedValue, 'i');
    if (!value) {
        return Promise.resolve(myArr);
    }
  fetch(`/mypoint`)
    .then((response) => response.json())
    .then((users) => {
    if (users == undefined) {

      return []
    } else {

      return users
    }
    })
  .catch(err => {
    console.log(err)
  })


 }

因此,fetch中的return返回未定义的结果。我应该怎么做?有什么建议吗

它的
异步API处理
问题。在
getSuggestions
中,您没有返回任何内容。
fetch callback
中的
return
语句将不会返回到
onSuggestionfetchRequested
for
setState
。默认情况下
getSuggestions
返回
未定义的

解决方案:

function getSuggestions(value, callback) {

      return fetch(`/mypoint`).then((response) => response.json()).then((users) => {
        if (users == undefined) {

          callback(null, []);
        } else {

          callback(null, users);
        }
      }).catch(err => {
        callback(err);
      })

    }
要么你

  • 承诺链接
  • 通过回调找到更好的
  • 使用回调的解决方案:

    function getSuggestions(value, callback) {
    
          return fetch(`/mypoint`).then((response) => response.json()).then((users) => {
            if (users == undefined) {
    
              callback(null, []);
            } else {
    
              callback(null, users);
            }
          }).catch(err => {
            callback(err);
          })
    
        }
    
    功能:OnSuggestionFetchRequested

    onSuggestionsFetchRequested = ({value}) => {
    
      getSuggestions = (value, (err, data) => {
        this.setState({isLoading: false, suggestions: data});
      });
    
    };
    

    在何处渲染组件?在与functions@Kaan如果它对你有用,请投票并接受它