我正在使用库react-cookie(https://www.npmjs.com/package/react-cookie),并且我想在关闭浏览器或选项卡时删除用户cookie。我在Approuter中使用了ComponentWillUnmount,但是在关闭浏览器时不起作用。有人知道如何实现吗?
import React from 'react';
import {Router, Route, Switch} from 'react-router-dom';
import history from '../data/history';
import { withCookies, Cookies } from 'react-cookie';
import { instanceOf } from 'prop-types';
class AppRouter extends React.Component{
static propTypes = {
cookies: instanceOf(Cookies).isRequired
};
constructor(props){
super(props)
}
componentWillMount(){
const {cookies} = this.props;
cookies.remove('userInfo');
}
render(){
return(
<Router history={history}>
<div>
<Header/>
<div className="main-container">
<Switch>
//routes
</Switch>
<Footer/>
</div>
</div>
</Router>
);
}
}
export default withCookies(AppRouter);
路由器确实收到了cookie,所以为什么不能用componentWillUnmount删除它?以及如何删除它们?
答案 0 :(得分:0)
并不是特定于React的,但是您可以使用
window.addEventListener("beforeunload", (ev) =>
{
ev.preventDefault();
cookies.remove('userInfo');
});
也许在挂载时调用它,这样您就可以访问您的类实例。
答案 1 :(得分:0)
这可能会帮助您...
componentDidMount(){
window.addEventListener(
"beforeunload",
cookies.remove('userInfo')
);
}
答案 2 :(得分:0)
创建cookie时。 请设置为0过期。 例如
cookies.set('userInfo', name, { expires: 0 });
然后,此Cookie将在浏览器关闭时过期。