Javascript React fetch返回未定义的,但在控制台中返回数组
我正在使用react autosuggest尝试从服务器获取结果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
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
forsetState
。默认情况下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如果它对你有用,请投票并接受它