使用hashes.map函数选择标签



我有一个关于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和更多内容。但我希望你能在你的文本编辑器中运行这个来帮助你。它没有经过测试。如果你只是解释一下,那也很酷。

1-this.state.hash.push(data.hash);不是一个好主意,你正在改变状态而不是通过setState来改变它

2-listItems在函数getHashes中定义,但从未添加到状态或组件实例中,因此您无法在呈现函数中访问它

通过将select的值设置为函数来实现什么并不明显

最新更新