reactjs 当在react-big-calendar视图之间切换时,有没有一种方法可以改变url?

gcuhipw9  于 2023-02-08  发布在  React
关注(0)|答案(1)|浏览(138)

我正在尝试使用react-router-dom实现react-big-calendar视图之间的切换,我知道日历有自己的路由,但是这个路由不改变URL,所以用户不能使用箭头或者手势返回到之前的视图,或者使用链接打开一个具体的视图,有没有办法实现呢?

pengsaosao

pengsaosao1#

在受控状态场景中,您可以使用onNavigate控制date,使用onView控制view,您可以使用这些方法来控制路由,然后使用url路由更改来更新状态变量。

const onNavigate = (newDate, newView = viewFromState) => {
  // convert the date to some url string to use
  history.push(`${routeBase}/${convertedDate}/${newView}`);
};

const onView = (newView) => {
  history.push(`${routeBase}/${convertedDateFromState}/${newView}`)
};
// at your component route, and this is seriously paraphrasing
  const params = useParams();
  // I'm using a reducer, since I often update multiple
  // bits of state simultaneously. I also, in the reducer,
  // remember to convert the 'date' to a true JS Date object
  // for RBC
  dispatch({type: 'PARAMS', params});

Calendar使用新的onNavigateonView方法来控制这些状态值,您的方法更新url并维护历史记录(这样您就可以前进和后退),您的Router更新Calendar的实际状态值,并且您可以同时获得日历控件和浏览器历史记录。

相关问题