[英]history.replace doesn't work in react router dom v5.2
我觉得我在做坏事。 当单击我的列表中的一个项目时,我试图重新加载相同的 url ( /timetable
),但更改了状态。 但是当我在那个端点上时,当我点击其他ListItem
时没有任何反应。 我的意思是我在/timetable
, state = {semester: true}
,当我点击第二个项目时,没有任何变化。
我从react-router-dom
获取const history = useHistory
。
<List component="div" disablePadding>
{HorarioElements.map(({ text, icon, route, state }) => (
<StyledListItem
button
key={text}
onClick={() => {
history.replace('/timetable', state)
}}
>
<ListItemIcon>{icon}</ListItemIcon>
<ListItemText primary={text} />
</StyledListItem>
))}
</List>
HorarioElements
数组如下:
const HorarioElements = [
{
text: '1er semestre',
icon: <Filter1Icon />,
state: { semester: true },
},
{
text: '2do semestre',
icon: <Filter2Icon />,
state: { semester: false },
},
]
任何人都知道这样做的正确方法是什么?
React Router history.replace
的state
与您的应用程序状态不同——它是存在于history
对象本身的状态。 您很少需要使用它。
要在保持在同一页面上的同时更改您的应用程序状态,您需要useState
(适用于限定于组件或其直接子useContext
的状态)或useContext
(适用于适用于整个应用程序或应用程序的重要子树的状态)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.