javascript - 返回根据查询参数匹配的数据

标签 javascript reactjs

我正在使用 react Hook 来动态渲染数据。我正在执行两件事:

a.从组件的历史记录中获取 URL 参数。

b.从组件的历史 Prop 中获取状态数据,该数据返回给我一个对象数组,如下所示:

current_data: Array(2)
0: {registration_data: {…}, company_name: "Test"}
1: {registration_data: {…}, company_name: "Sample"}
lastIndex: (...)
lastItem: (...)
length: 2
__proto__: Array(0)

我需要实现的是,从与我的 URL 查询参数匹配的 current_data 对象中呈现数据。我正在使用 for 循环 来迭代我的数组。我知道这是一个菜鸟问题,但有点坚持获得所需的输出。

import React, {useState, useEffect} from 'react';

const ViewRegistrations = (props) => {
    const [queryParam, setParam] = useState('');
    useEffect(() => {
        const queryParam = new URLSearchParams(props.location.search).get('registration');
        setParam(queryParam);
    })

    const [dataRecieved, setData] = useState( [] );

    useEffect(() => {
        const data = props.location.state.current_data;
        // const testData
        for(var i = 0; i< data.length; i++){
            console.log(data[i] === queryParam)
        }
    });

    return (
        <div>
            {}
        </div>
    )
}

export default ViewRegistrations;

语句 console.log(data[i] === queryParam) 每次都会返回 bool 值。我希望与查询参数匹配的数组数据存储在 dataRecieved 状态中。请帮忙解决这个问题。

最佳答案

您的问题的一个解决方案如下 1.首先在组件的挂载上获取您想要的queryParam(我也不确定您对useState钩子(Hook)的使用情况,第二个变量应该是第一个添加了“set”的变量),如下所示:

const [queryParam, setQueryParam] = useState('');  
useEffect(() => {
const query = new URLSearchParams(props.location.search).get('registration');
            setQueryParam(query);
}, []) // don't forget to add an empty dependency array so it runs only once

其次,您可以与另一个 useEffect 进行匹配条件

useEffect(() => {
const data = props.location.state.current_data;
if (data && queryParam)
for(var i = 0; i< data.length; i++){
    data[i] === queryParam ? setDataReceived([...dataReceived, data[i]) : null;
  }
}, [queryParam])

最后,您可以在显示它们方面做任何您想做的事情,您可以使用组件中的 map 来实现此目的,例如

{dataReceived.length && dataReceived.map((data) => <whatever>data</whatever>)}

我不是 100% 确定这是一个工作版本,也许应该进行一些调整,但这给了你一个想法

关于javascript - 返回根据查询参数匹配的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59029068/

相关文章:

reactjs - 尝试设置 redux 历史记录以便我可以重定向

javascript - 在 WebRTC 连接中检测离线对等体

javascript - 在 ajax 调用之前显示模态形式并从中获取数据

javascript - 如何在 React Native 中更改原生 Picker fontSize 和 fontFamily

javascript - 如何让 Formik 返回一个 bool 值?

reactjs - 在 React JS 中使用颜色控制时的警告

reactjs - JavaScript 和 JSX 有什么区别?

javascript - Firebase:在成功回调中使用新创建的 key

javascript - RequestAnimationFrame 调用时间根据我的 Canvas 大小而变化

javascript - 模块 `require` 基本路径