我正在尝试使用wiki引用api创建一个显示来自名人(例如Bob Dylan)的引用的应用。
请求网址如下所示:
https://en.wikiquote.org/w/api.php?format=json&action=parse&page=Bob_Dylan&prop=text
我有使用React Native请求:
componentWillMount() {
Api().then((response) => {
this.setState({
quote:response.parse.text
})
});
}
但是,当我尝试显示引号时,它以对象的形式出现并在视图中获取[object object]。在我收到的控制台中:
可能未处理的承诺拒绝(id:0): 对象作为React子对象无效(找到:具有键{}的对象)。如果您要渲染子集合,请使用数组,或使用React附加组件中的createFragment(object)包装对象。检查
Text
的呈现方法。 不变违规:对象无效作为React子对象(找到:具有键{}的对象)。如果您要渲染子集合,请使用数组,或使用React附加组件中的createFragment(object)包装对象。检查Text
的呈现方法。
当我尝试response.parse.text.*
时,我收到了令牌错误。有任何建议如何解决这个问题?
答案 0 :(得分:3)
您必须通过调用response
方法明确将Object
变为json()
,例如:
var url = 'https://en.wikiquote.org/w/api.php?format=json&action=parse&page=Bob_Dylan&prop=text';
fetch(url)
.then((response) => response.json())
.catch((error) => console.warn("fetch error:", error))
.then((response) => console.log(response.parse))
答案 1 :(得分:0)
您可以使用response.text()而不是response.json()
var url = 'https://en.wikiquote.org/w/api.php?
fetch(url)
.then((response) => response.text())
.catch((error) => console.warn("fetch error:", error))
.then((response) => console.log(response.parse))