【发布时间】:2019-04-13 20:40:25
【问题描述】:
喂!
我的反应代码有问题。我的任务是从 iTunes API 调用,然后我处理数据。但是我不能将它保存为一个变量以便以后可以传递它。
import React, { Component } from 'react';
class SearchField extends Component{
constructor(props) {
super(props);
this.state = {value: ''};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange = (event) => {
this.setState({value: event.target.value});
}
handleSubmit = (event) => {
event.preventDefault();
fetch(`https://itunes.apple.com/search?media=music&term=${this.state.value.toLowerCase()}`)
.then((resp) => resp.json())
.then(searchRes => searchRes.results[0].artistName)
.catch(err => console.log(err));
}
render() {
return(
<section className="hero is-primary">
<div className="hero-body">
<div className="container">
<form onSubmit={this.handleSubmit}>
<input className="input is-primary" type="text" value={this.state.value} onChange={this.handleChange} placeholder="Search for artist" />
<input className="button is-info" type="submit" value="Search" />
</form>
</div>
</div>
</section>
)
}
}
export default SearchField;
稍后我将不得不使用获取的数据,我只需要首先需要艺术家姓名。 如果我记录值(searchRes.results[0].artistName,我会得到正确的值,但如果我想保存它以备后用,我只会得到空的 console.log。 我尝试了几种方法,但始终没有得到结果。
请帮帮我。
【问题讨论】:
-
“无法保存”是什么意思?
-
我想把它保存在一个变量中,比如 let artist = searchRes.results[0].artistName;但如果我这样做,它只会给我一个空白日志而不是获取的名称。
标签: javascript reactjs promise fetch jsx