我有一个React组件,它从IndexedDB获取一些数据,这是一个异步任务,它使用useParams
钩子传入的url中的id
,假设id
= 1。当我单击示例中的链接时,id
变为2,但此时什么也没有发生,组件没有重新呈现。
我需要做些什么才能让它工作?我只是不明白为什么它现在不工作。有人能给我点启发吗?
import React, {useState} from 'react';
import { Link, useParams } from "react-router-dom";
import { useAsync } from 'react-async';
export default function (props) {
let { id } = useParams();
const { data, error, isLoading } = useAsync({
promiseFn: loadData,
id: parseInt(id)
});
if (isLoading) return "Loading...";
if (error) return `Something went wrong: ${error.message}`;
if (data)
return (
<>
<h1>{data.name}</h1>
<Link to={'/2'}>other id</Link>
</>
);
}
2条答案
按热度按时间3pvhb19x1#
异步函数应该在
useEffect
钩子内部调用。当id
发生变化时,useEffect
将始终被调用。lymnna712#
当使用react-async库中的useAsync钩子时,您可以使用watch或watchFn选项来监视更改。因此,更改以下行:
致:
成功了