使用hashhes.map函数选择标签

时间:2018-12-14 12:36:56

标签: reactjs

我有一个关于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 个答案:

答案 0 :(得分:1)

1- this.state.hash.push(data.hash);并不是一个好主意,您正在更改状态,而不用setState来更改状态

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

通过将select的值设置为一个函数来实现的目的并不明显