反应:当用户关闭浏览器时删除cookie

时间:2018-11-26 11:53:11

标签: javascript reactjs cookies react-cookie

我正在使用库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删除它?以及如何删除它们?

3 个答案:

答案 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将在浏览器关闭时过期。