我有一个关于getHashes()的问题,有一个映射函数,我想在标签中列出哈希值。 listItems没有定义...为什么? 我可以得到一些帮助吗?
import React, { Component } from 'react';
import axios from 'axios';
class Filter extends Component {
constructor(props) {
super(props);
this.state = {
hash: [
"aSj1T", "CD6oL"
]
}
}
getHashes(){
const hashes = this.state.hash;
const listItems = hashes.map((hashes) => <option>{hashes}</option>);
for (var i = 0; i < hashes.length; i++){
const hashUrl = "https://api/v1/hashes/" + hashes[i];
axios.get(hashUrl)
.then((response) => {
const data = response.data[0];
this.state.hash.push(data.hash);
})
.catch((error) => {
console.log(error);
});
}
}
render() {
return (
<div>
<select name="select"
type="select" value={this.getHashes}>
{listItems}
</select>
</div>
);
}
export default Filter;
我删除了代码,它是reux axios的代码,还有我的文本编辑器上的更多代码。但我希望您可以在文本编辑器中运行此程序以提供帮助。未经测试。如果您只是解释,那也很酷。
答案 0 :(得分:1)
1- this.state.hash.push(data.hash);
并不是一个好主意,您正在更改状态,而不用setState
来更改状态
2- listItems
是在函数getHashes
中定义的,但是从未添加到状态或组件实例中,因此您无法在render函数中访问它
通过将select
的值设置为一个函数来实现的目的并不明显