微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在反应中推送和用于此页面的查询参数?

如何解决如何在反应中推送和用于此页面的查询参数?

我从教程中找到了这个代码库。我正在尝试从分页 API 中获取数据。

问题是这里似乎没有使用 react-router。

 const [hits,setHits] = useState([]);
     const [pageCount,setPageCount] = useState(1); #New
    const [isLoaded,setisLoaded] = useState(false);
    const [currentPage,setcurrentPage] = useState(0); #New
    const [query,setQuery] = useState('startups'); 

    const URL = `https://hn.algolia.com/api/v1/search?query=${query}&page=${currentPage}`;

    const handleFetch = () => {
        fetch(URL)
            .then(response => response.json())
            .then(body => {
                setData([...body.hits]);
                                setPageCount(body.nbPages); #New
                                setisLoaded(true); #New
            })
            .catch(error => console.error('Error',error));
    };

      #New
    const handlePageChange = (selectedobject) => {
        setcurrentPage(selectedobject.selected);
        handleFetch();
    };

return (
    <div>
         <label>Search</label>
        <input type="text" onChange={(event) => setQuery(event.target.value)} />
        <button onClick={handleFetch}>Get Data</button>

            {isLoaded ? (
                hits.map((item) => {
                    return (
                        <NewsCard
                            url={item.url}
                            title={item.title}
                            author={item.author}
                            key={item.objectID}
                        />
                    );
                })
            ) : (
                <div></div>
            )}    
                       #New
            {isLoaded ? (
                <ReactPaginate
                    pageCount={pageCount}
                    pageRange={2}
                    marginPagesdisplayed={2}
                    onPageChange={handlePageChange}
                    containerClassName={'container'}
                    prevIoUsLinkClassName={'page'}
                    breakClassName={'page'}
                    nextLinkClassName={'page'}
                    pageClassName={'page'}
                    disabledClassNae={'disabled'}
                    activeClassName={'active'}
                />
            ) : (
                <div>nothing to display</div>
            )} 

    </div>
);
  
}

如何在反应路由器中使用 currentPage 和 Query 作为查询参数,因此如果 URL 中没有任何查询或 currentPage 参数,则认 currentPage 将为 1,并且无论何时更改查询或 currentPage URL 也将更新为 ' ?'查询参数如 https://example.com?currentPage=9&query=startup

解决方法

您可以使用 history 将查询参数推送到 url 中,

history.push(`/?currentPage=${currentPage}&query=${queryString}`)

查看此repository以了解有关历史

的更多信息

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。