首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React:当用户关闭浏览器时删除cookie

React:当用户关闭浏览器时删除cookie
EN

Stack Overflow用户
提问于 2018-11-26 19:53:11
回答 3查看 18.5K关注 0票数 4

我正在使用库react-cookie (https://www.npmjs.com/package/react-cookie),并且希望在关闭浏览器或选项卡时删除用户cookie。我在我的Approuter中使用了ComponentWillUnmount,但当浏览器关闭时,它不起作用。有人知道如何做到这一点吗?

代码语言:javascript
复制
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);

路由器确实会收到cookies,所以为什么我不能用componentWillUnmount删除它?我如何删除它们呢?

EN

回答 3

Stack Overflow用户

发布于 2018-11-26 20:00:10

当您创建cookie时。请将expires设置为0。e.g

代码语言:javascript
复制
cookies.set('userInfo', name, { expires: 0 });

则此cookie将在浏览器关闭时过期。

票数 0
EN

Stack Overflow用户

发布于 2018-11-26 19:56:15

不是真正特定于React,但您可以使用以下代码:

代码语言:javascript
复制
window.addEventListener("beforeunload", (ev) => 
{  
    ev.preventDefault();
    cookies.remove('userInfo');
});

也许在挂载时调用它,这样你就可以访问你的类实例。

票数 -1
EN

Stack Overflow用户

发布于 2018-11-26 19:58:52

这可能会对你有帮助。

代码语言:javascript
复制
componentDidMount(){
    window.addEventListener(
        "beforeunload",
        cookies.remove('userInfo')
    );
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53480549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档