在React

我正在尝试根据静态数组过滤出JSON响应。 因此,例如,如果响应如下所示

{
   "Name":React,"Version": 9.0,"Level": Intermediate,"Machine": Desktop,"Release date": 2019-08-10
}

。这存储在组件的状态中。 数组是

[ "Version","Release date"]

这是通过道具来的。 现在,我想使用此数组过滤json数据。因此,这意味着如果我们使用给定的示例,则我只能显示字段版本和发布日期! 有办法吗? 那么遍历它们中的每一个以及到底在哪里进行迭代是合适的呢?像应该在componentDidmount函数中对其进行过滤,还是需要为其定义另一个函数?

我是从事React和JSX的新手。

xiefeiyang 回答:在React

我不确定我是否完全了解您的目标,但请尝试一下。

首先,您要使用响应设置状态。 因此,您必须在构造函数中设置状态response: {}。你做完了吗? 如果是这样,那就太好了! 现在,当您使用axios.get()或fetch()获得响应时,将响应设置为状态。

axios
    .get(url)
    .then(res => { this.setState({ response: res }); }) //sets JSON object to state
    .catch(e => console.log(e)); //return a error to the console if it fails

(PS:如果使用react fetch()函数,则首先需要在使用setState之前使用.json();将响应转换为JSON)

但是我不理解您的数组问题。 您想将ReleaseDate和Version的值附加到数组吗? 还是只是替换其数据?

也许您想创建一个对象数组,其中每个对象都有一个版本和发行日期字段。或者甚至可以将整个响应附加到此数组(有点像保留先前响应的历史记录)并直接访问版本和日期字段。

您能澄清吗?

还有一点提示: 您询问是否应该在componentDidMount或其他函数中进行迭代。我建议您创建一个类似readResponse的函数,并在componentDidMount()中调用它,除非您绝对确保不再需要再次调用它。假设您将在此页面上发出多个请求,您将需要多次调用它。

问题编辑后:

@VarnikaChaturvedi抱歉,回复晚。我想我明白你的问题。 这是我们可以做的: 让我们使用我之前提到的相同代码,但有所不同:

axios
    .get(url)
    .then(res => { 
        this.setState({ response: res.data });
        myArray.push({ 
            "Version": res.data.get("Version"),"Release date": res.data.get("Release date")
        });
    })
    .catch(e => console.log(e));


    // what is supposed to happen is add a object containing version 
    // and release date to a already defined array named myArray

PS:我正在从内存中键入此内容,因此可能存在语法错误或一些愚蠢的事情,因此请阅读错误(如果有)。

本文链接:https://www.f2er.com/3109618.html

大家都在问