【问题标题】:Dynamically filter out a JSON response in React在 React 中动态过滤掉 JSON 响应
【发布时间】:2020-03-09 07:53:51
【问题描述】:

我正在尝试根据静态数组过滤掉 JSON 响应。 因此,例如,如果响应类似于以下内容

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

。这存储在组件的状态中。 数组是,比如说

[ "Version", "Release date"]

这是通过道具来的。 现在我想使用这个数组过滤 json 数据。因此,这意味着如果我们使用给定的示例,我应该只能显示字段版本和发布日期! 有没有办法做到这一点? 那么如何迭代它们中的每一个以及确切地在哪里迭代呢?是否应该在 componentDidMount 函数中进行过滤,或者我们需要为它定义另一个函数?

我是 React 和 JSX 的新手。

【问题讨论】:

    标签: arrays reactjs loops jsx


    【解决方案1】:

    我不确定我是否完全理解你的目标,但让我们试试吧。

    首先,您要设置响应的状态。 所以你必须在构造函数中设置一个状态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() 中调用它,除非您绝对确定不需要再次调用它。假设您将在此页面上提出超过 1 个请求,您需要多次调用它。

    问题编辑后:

    @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:我是凭记忆输入的,所以可能有语法错误或一些愚蠢的东西,所以如果有错误请阅读。

    【讨论】:

    • 您好刚刚更新了问题,您现在可以看一下吗?
    • @VarnikaChaturvedi 抱歉回复晚了。我编辑了我的原始回复以尝试解决您的问题。希望能帮助到你。此外,如果您的问题已解决,请不要忘记将问题标记为已解决。祝你好运!
    猜你喜欢
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    相关资源
    最近更新 更多