【发布时间】:2017-12-16 18:03:32
【问题描述】:
我在前端使用 reactjs,后端使用 nodejs。我通过这段代码调用我的后端(localhost:3001/api/tunes):
componentDidMount(){
fetch("/api/itunes")
.then((results)=>{
this.setState({queryResult:results});
})
}
此代码应该返回一个字符串值,我将其分配给本地状态变量 queryResult。我不明白为什么代码给出错误 - 对象不是有效的反应子。
我的渲染函数:
render(){
return(
<div>
<form class="form-inline my-2 my-lg-0">
<input class="form-control mr-sm-2" type="search" placeholder="Search"
value={this.state.queryValue} onChange={this.handleQueryChange} />
<button class="btn btn-outline-success my-2 my-sm-0" type="submit"
onClick={this.submitQuery}></button>
</form>
<div>{this.state.queryResult}</div>
</div>
);
}
这是我从我的服务器得到的:
router.get('/api/itunes',(req,res,next)=>{
request('https://itunes.apple.com/search?term=jack+johnson',
function (error, response, body) {
if (!error && response.statusCode == 200) {
// console.log(body) // Print the google web page.
var result =JSON.parse(body);
res.send(result.results[0].artistName);
}
});
});
【问题讨论】:
-
请显示渲染方法
-
您不能只呈现来自 API 的响应。您必须将其映射到各个元素。
-
您正在尝试渲染
<div>{this.state.queryResult}</div>,因此您收到此错误,您需要映射您的响应并渲染它 -
即使结果是字符串,也不能只赋值给局部状态变量?
-
@ASHUTOSHCHANDRA 从错误信息来看,这不是一个字符串。