Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript History.push不';重定向到同一路径名但使用不同的路由参数时不起作用_Javascript_Reactjs_React Router_Frontend - Fatal编程技术网

Javascript History.push不';重定向到同一路径名但使用不同的路由参数时不起作用

Javascript History.push不';重定向到同一路径名但使用不同的路由参数时不起作用,javascript,reactjs,react-router,frontend,Javascript,Reactjs,React Router,Frontend,我有以下路线“/event/:eventId” 当用户从主页出来,然后点击一张卡片时,它会重定向到事件页面(到目前为止一切正常) 但在事件页面内部,我有其他卡片,它们重定向到其他事件页面,使用不同的ID作为路由参数,然后单击,只更改路径,但不重新呈现页面 如果我在一个具有相同路径名的页面中,不管路由参数是否更改,它都不会重新呈现该页面 我尝试使用组件而不是历史记录。推送,但也不起作用 这就是重定向功能: const onCardClick = () => { history.pu

我有以下路线
“/event/:eventId”

当用户从主页出来,然后点击一张卡片时,它会重定向到事件页面(到目前为止一切正常)

但在事件页面内部,我有其他卡片,它们重定向到其他事件页面,使用不同的ID作为路由参数,然后单击,只更改路径,但不重新呈现页面

如果我在一个具有相同路径名的页面中,不管路由参数是否更改,它都不会重新呈现该页面

我尝试使用
组件而不是
历史记录。推送
,但也不起作用

这就是重定向功能:

 const onCardClick = () => {
    history.push(
      EVENT_PAGE_LOCATION.toUrl({
        eventId: event?.id,
      }),
    );
  };



组件将在管线更改时重新渲染。请参见下文,如果将
链接
替换为推送到历史对象的
onClick
元素,也可以使用此功能。我怀疑问题在于组件的内容与您正在推送的id无关。确保传递给路由中组件的道具反映了该id,否则组件在装载/更改时会根据id参数确定其自己的内容

const{
浏览器路由器,
链接
路线
}=window.ReactRouterDOM;
函数App(){
返回(
);
}
函数子(){
console.log('rendered');
const random=Math.floor(Math.random()*10);
返回到{random};
}
ReactDOM.render(,document.getElementById('root'))

组件将在路由更改时重新渲染。请参见下文,如果将
链接
替换为推送到历史对象的
onClick
元素,也可以使用此功能。我怀疑问题在于组件的内容与您正在推送的id无关。确保传递给路由中组件的道具反映了该id,否则组件在装载/更改时会根据id参数确定其自己的内容

const{
浏览器路由器,
链接
路线
}=window.ReactRouterDOM;
函数App(){
返回(
);
}
函数子(){
console.log('rendered');
const random=Math.floor(Math.random()*10);
返回到{random};
}
ReactDOM.render(,document.getElementById('root'))

结果是页面被重新呈现,但它们没有被卸载,以便再次执行graphql查询

所以这很重要,React路由器不会卸载页面

每次参数更改时,我都必须重新提取查询:

useEffect(() => { 
 refetchEvent()
}, [params])

结果表明,页面被重新呈现,但它们没有被卸载,以便再次执行graphql查询

所以这很重要,React路由器不会卸载页面

每次参数更改时,我都必须重新提取查询:

useEffect(() => { 
 refetchEvent()
}, [params])

您使用的是路由器历史记录还是Windows.history中的历史记录
onClick=()=>{props.history.push({'event/${id}}}}
您使用的是react路由器历史记录还是window.history中的历史记录
onClick=()=>{props.history.push({'event/${id}}})}