我有一个Reaction应用程序,有两个页面-主页和旅行页面.Trip页面使用通过URL传入的tripID呈现.我的app.js如下所示:

function App() {
  return (<>
    <ThemeProvider theme={theme}>
      <Router>
        <Routes>
          <Route exact path='/' element={<Home />} />
          <Route path='/trip/:tripId' element={<TripComponent />} />
        </Routes>
      </Router>
    </ThemeProvider>
  </>
  );
}

我有一个全球导航栏,上面有tripIds个和Link个不同的菜单,可以导航到TripComponent.当我在"/"的路径上,我导航到"/trip/tripA",我没有问题.但当我在"/trip/tripA"岁时,我想导航到"/trip/tripB",它不起作用.我可以看到url发生了相应的变化,但我的TripComponent没有重新显示tripB的数据.我导航栏中菜单的代码如下:

ReactDOM.createPortal(<>
    <CustomModal setOpen={setShowTripList} title={"Saved Trips"}>
            <List>
                {trips && trips.length > 0 &&
                    trips.map((trip, index) => {
                        return (
                            <Link to={`/trip/${trip._id}`} >
                                <ListItemButton>
                                    <ListItemText id={trip._id} primary={trip.title} />
                                </ListItemButton>
                            </Link>
                        )
                    })
                }
            </List>
    </CustomModal>
</>
    , document.getElementById("portal"))

我搞不懂为什么会发生这种事.当我按Link导航到另一个URL时,它不应该卸载并重新挂载吗?

推荐答案

tripId路由路径参数更新被布线的元素TripComponent时,不重新装载它,它只被重新呈现.如果有一些逻辑依赖于tripId路径参数,则TripComponent需要"监听"对该值的更改.如果props 价值发生变化,这也是需要发生的事情.

使用依赖于tripId路径参数的useEffect挂钩,根据当前值发布副作用.

示例:

import { useParams } from 'react-router-dom';
...

const TripComponent = () => {
  const { tripId } = useParams();

  useEffect(() => {
    // initial render or tripId updated
    // do something with current tripId value
  }, [tripId]);

  ...
};

Javascript相关问答推荐

如何才能拥有在jQuery终端中执行命令的链接?

通过在页面上滚动来移动滚动条

Redux查询多个数据库Api reducerPath&

处理时间和字符串时MySQL表中显示的日期无效

JS—删除对象数组中对象的子对象

加载背景图像时同步旋转不显示的问题

如何在ASP.NET中使用Google Charts API JavaScript将条形图标签显示为绝对值而不是负值

这个值总是返回未定义的-Reaction

用JS从平面文件构建树形 struct 的JSON

如何将innerHTML字符串修剪为其中的特定元素?

JavaScript是否有多个`unfined`?

自定义图表工具提示以仅显示Y值

令牌JWT未过期

Socket.IO在刷新页面时执行函数两次

$GTE的mongoose 问题

使用props 将VUE 3组件导入JS文件

在点击链接后重定向至url之前暂停

ReactJS Sweep Line:优化SciChartJS性能,重用wasmContext进行多图表渲染

如何为Reaction应用程序创建仅登录的路由?

FiRestore按字段的提取顺序