首页 > 解决方案 > 单击 Link with React 时注销

问题描述

Link我希望在用户单击而不单击注销直接执行注销功能button(2 个操作对 1 个操作)。

我有这个链接+这条路线:

<Link to="/logout">Logout</Link>
...
<Route path="/logout">
    <Logout />
</Route>

注销组件:我真的需要一个组件来调用“单行”功能吗?

import React, { Component } from 'react'
import { logout } from './../../services/auth.service';
import { Redirect } from 'react-router-dom';

export default class Logout extends Component {
    state = {
        navigate: false
    }

    handleLogout() {
        logout();
        this.setState({
            navigate: true
        })
    }
    render() {
        const { navigate } = this.state;

        if (navigate) {
            return <Redirect to="/login" push={true} />;
        }
        return <button onClick={() => this.handleLogout()}>LOGOUT</button>
    }
}

我将所有 login()、register()、getData()、postData() 逻辑放在服务中,甚至 logout() 都放在 auth.service.js 中:

export function logout() {
  localStorage.removeItem('user');
}

你知道我该怎么做这个“无按钮点击”退出快捷方式吗?

谢谢您的帮助。

[编辑]

单击带有此的链接时,似乎可以调用一个函数:

<Link to="/logout" onClick={() => this.logout()}>Logout</Link>

为什么React 路由器文档中没有提到这一点?

这个解决方案是不对的,因为我仍然不想使用注销组件......

标签: reactjslogout

解决方案


推荐阅读