reactjs - 更改登录/注销时的 React 按钮文本

标签 reactjs authentication authorization

我对 React 还很陌生,正在制作一个涉及登录的应用程序。我的导航栏上有登录按钮,我希望更改文本,以便当用户登录时,按钮的文本更改为“注销”,反之亦然。

class SiteBar extends React.Component {
constructor(props) {
    super(props);

    this.toggle = this.toggle.bind(this);
    this.state = {
        isOpen: false,


    };
}
toggle() {
    this.setState({
        isOpen: !this.state.isOpen,
    });
}
render() {
    return (
        <div>
        <div>
            <Navbar color="faded"  light expand="md">
                <Collapse isOpen={this.state.isOpen} navbar>
                    <Nav className="ml-auto" navbar>
                        <NavItem>
                            <Button color="light" onClick={() => this.props.clickLogout()}>{this.onClick ? 'Login' : 'Logout'}</Button>
                        </NavItem>
                    </Nav>
                </Collapse>
            </Navbar>
        </div>

请记住,我正在将一个函数传递给我的主应用程序文件,欢迎任何建议。提前致谢。

最佳答案

您应该向定义 this.props.clickLogout 的类添加一个状态

this.state = {
    isLoggedIn: false
}

然后,您还传递该类的 props 并将状态作为 props 传递。

<SiteBar clickLogOut={this.clickLogOut} isLoggedIn={this.state.isLoggedIn}/> 

按钮文本的条件是属性isLoggedIn。当按钮触发 onClick 函数时,函数 clickLogout() 应将 isLoggedIn 更改为 true,从而重新呈现 ClassSite 和带有文本 Logout 的按钮

<Button color="light" onClick={() => this.props.clickLogout()}>
    {this.props.isLoggedIn? 'Logout' : 'Login'}
</Button>

关于reactjs - 更改登录/注销时的 React 按钮文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48969252/

相关文章:

reactjs - 如何使用 redux-form 选择器使syncErrors脱离状态

具有自定义域的用户的 Azure AD B2B 身份验证错误 - AADSTS65005 : Using application 'My Application' is currently not supported

javascript - 使用 AngularFire 和 AngularJS 登录 Firebase 后如何重定向到 URL?

c# - 限制对某些 .aspx 页面的访问

微服务架构中资源级别的授权

reactjs - 当应用程序在 Debug模式下运行时, native 按钮 OnPress 不会触发

reactjs - 无法使用带有功能组件的引用从父函数调用子函数

angularjs - Node.js 和 AngularJS 实现身份验证和授权机制的最快、最简单的方法

c# - ASP.NET MVC - 如何在登录页面上显示未经授权的错误?

javascript - 我如何在 react 中向按钮添加条件渲染