ReactJs React-Router导航/显示和隐藏登录注销菜单

时间:2017-05-16 00:24:21

标签: reactjs navigation react-router

我遇到了与react-router导航相关的一些问题。在我的导航中有2个菜单登录和注册。我的索引页面是登录。

在登录页面输入emaild和密码的值并提交登录按钮后,它将输出为sessionValue。我的sessionValue是从serverSide返回的用户名,它重定向到TodoApp页面。登录后,它重定向到TodoApp页面。我想显示注销菜单而不是登录导航。

Myy代码如下:

app.jsx

  ReactDOM.render(
      <Router history={browserHistory}>
        <Route path="/" component={Main}>
            <Route path="RegistrationForm" component={RegistrationForm}/>
            <Route path="todoapp/:sessionValue"component={TodoApp}/>
            <IndexRoute component={Login}/>
        </Route>
      </Router>, 
      document.getElementById('app')
    );

导航组件

我通过使用localstorage尝试了这个,但它不起作用。只有点击浏览器的向后箭头才能工作。

     var Nav= React.createClass({
        render:function(){
            var strUserName = localStorage.getItem('sessionValue');
            console.log(strUserName);
        function loginMenu(){
                if(strUserName){

                                return <Link to="/RegistrationForm" activeClassName="active" activeStyle={{fontWeight: 'bold'}}>Logout</Link> 

            }
            else{
                return <IndexLink to="/" activeClassName="active" activeStyle={{fontWeight: 'bold'}}>LogIn</IndexLink> 

            }
        }
            return(
                <div className="top-bar">
                        <div className="top-bar-left">
                            <ul className="menu">
                            <li className="menu-text">
                                React App
                            </li>
                            <li>
                                {loginMenu()}
                            </li>
                            <li>
                                    <Link to="/RegistrationForm" activeClassName="active" activeStyle={{fontWeight: 'bold'}}>Signup</Link>
                            </li>

                            </ul>
                        </div>
                        </div>
                );
        }
        });
 module.exports=Nav;

登录页面(login.jsx)

if(validForm){
        axios.post('/login', {
        email:this.state.strEmail,
        password:this.state.strPassword
        })
        .then(function (response) {
        //console.log(response.data);
        var sessionValue=response.data;
//After login todoApp page is open and with session value.session value passed through url to todoApp.
        browserHistory.push(`todoapp/${sessionValue}`);
        localStorage.setItem('sessionValue',sessionValue);
 })
        .catch(function (error) {
        console.log(error);
        });
    }
}, 

问题:

  1. 如何显示/隐藏登录/退出菜单。

  2. 登录后显示退出菜单,点击退出菜单时显示登录菜单

0 个答案:

没有答案
相关问题