【发布时间】:2019-09-10 07:21:03
【问题描述】:
我有一个使用icanhazdadjoke API 检索笑话的简单应用程序。有一个搜索事件处理程序,它根据默认值为 15 的限制参数获取笑话。还有一个随机按钮,它调用限制设置为 1 的搜索方法。但是,每次单击随机按钮时,都会出现相同的结果--我怎样才能得到一个随机的单个搜索结果?
这是我的搜索处理程序:
// Default parameter
getJokes(limit = 15) {
this.setState({ isFetchingJokes: true });
fetch(
`https://icanhazdadjoke.com/search?term=${
this.state.searchTerm
}&limit=${limit}`,
{
method: 'GET',
headers: {
Accept: 'application/json'
}
})
.then(response => response.json())
.then(json => {
const jokes = json.results;
this.setState({
jokes,
isFetchingJokes: false
})
});
};
单击随机按钮时,将调用搜索处理程序,限制为 1(它作为渲染组件上的道具传递,来自另一个文件:onRandomize={() => this.getJokes(1)})
完整代码: App.js retrieval-form.js
【问题讨论】:
-
也许这不是你的代码的问题,它是 API 的工作方式,对于相同的 searchTerm 它返回相同的结果,所以如果你总是请求 1 它返回总是相同的。您可以通过请求 10 或 20 来模拟随机化,然后随机获取一个。
-
我同意 F.bernal,从 API 文档来看,只有在没有搜索词的情况下调用 API 时才会得到一个随机的笑话
标签: javascript reactjs