我是使用带有 React Native 的 API 的新手,我已经弄清楚了一些事情,但我现在要做的是创建一个搜索功能。到目前为止,我已经尝试了一些事情,但是要么没有调用该函数,要么我收到关于该函数被作为对象调用的错误。另外,我正在使用 axios 进行此 API 调用
这是我到目前为止所得到的。
export default class CategoryScreen extends React.Component {
constructor(props) {
super(props);
this.state = {
data: [],
isVisible: true,
city: '280',
isLoading: true,
search: ''
}
}
async componentDidMount() {
try {
const id = this.props.navigation.state.params.category;
const city = this.state.city;
const result = await axios.request({
method: 'get',
url: `https://developers.zomato.com/api/v2.1/search?city_id=${city}&category=${id}`,
headers: {
'Content-Type': 'application/json',
'user-key': 'a31bd76da32396a27b6906bf0ca707a2'
}
});
this.setState({ data: result.data.restaurants });
} catch (err) {
console.log(err);
} finally {
this.setState({ isLoading: false });
}
}
updateSearch = search => {
this.setState({ search });
};
searchReq = () => {
axios.request({
method: 'get',
url: `https://developers.zomato.com/api/v2.1/search?city_id=${city}&q${search}&category=${id}`,
header: {
'Content-Type': 'application/json',
'user-key': 'a31bd76da32396a27b6906bf0ca707a2'
}
});
this.setState({ data: result.data.restaurants });
}
render() {
const { search } = this.state;
return (
<SearchBar
placeholder="Type Here..."
onChangeText={this.updateSearch}
onSubmitEditing={this.searchReq}
value={search}
/>
)
}
}
如果有更高级的方法,我愿意学习新的东西,我只想完成我想做的事情。另外,我知道如果我当前的方法有效,如果用户在两者之间添加空格,它仍然会导致问题,所以我非常愿意学习新的和更高级的方法