问题
e.preventDefault();
在中,单击处理程序阻止默认导航操作的发生。
解决方案
我不认为有任何理由阻止此操作,因此我建议删除此调用以阻止默认操作。
function handleClick(e){
setPageNum(page => page + 1);
}
首选解决方案
假设你有一条路线
path="/pokemon/page/:page"
你应该使用
useParams
钩住并“嗅探”当前页面。这完全消除了同步URL路径和本地反应状态的需要,事实只有一个来源,URL路径。
import { useParams } from 'react-router-dom';
...
function PokemonList() {
const classes = useStyles();
const { page } = useParams();
const { loading, error, data } = useQuery(
pokemonList,
{ variables: { pageNum: page } },
);
if (error) {
return <h1>error</h1>;
}
if (loading) {
return <h1>loading</h1>;
}
return (
<div className="App">
{data.pokemonList.map((data) => (
...
))}
<Link
className='characterlink2'
to={`/pokemon/page/${Number(page) + 1}`}
>
<button type="button">Next</button>
</Link>
</div>
);
}