使用React和Material UI创建动态页眉UI
Creating a dynamic header UI with React and Material UI
在我的header.jsx文件中,我有:
// Default Import Statements go here
var Login = require(login.jsx)
const HeaderComponent = React.createClass({
getInitialState () {
return {
loggedIn: false,
};
},
render() {
return (
<Toolbar>
<ToolbarGroup key={1} float="right">
<Login />
</ToolbarGroup>
</Toolbar>
);
}
});
module.exports = HeaderComponent;
在我的登录组件(Login.jsx)中:
// Default Import Statements
var LoginDialog = React.createClass({
render() {
return (
<div>
<Dialog
title="Login"
ref="loginDialog"
autoScrollBodyContent = {true}
onRequestClose={this._cancelTouchTap}
open={this.state.open}>
<form action="/login" method="post" autoComplete="off">
<div>
<TextField hintText="Email Field" ref = "email" />
</div>
<div>
<TextField hintText="Password" type="password" ref = "password"/>
</div>
<div>
<RaisedButton label="Submit" onTouchTap={this._submitTouchTap}/>
<RaisedButton label="Cancel" onTouchTap={this._cancelTouchTap}/>
</div>
</form>
</Dialog>
<FlatButton label="Login" style={loginSpacing} primary={true} onTouchTap={this._handleTouchTap} />
</div>
);
},
_submitTouchTap: function(){
var primaryEmail = this.refs.email.getValue();
var password = this.refs.password.getValue();
var data = {
primaryEmail: primaryEmail,
password: password
};
$.ajax({
url: '/login',
dataType: 'json',
type: 'post',
data: data,
success: function(data) {
console.log(data);
}.bind(this),
error: function(xhr, status, err) {
this.transitionTo('/login');
}.bind(this)
});
this.refs.loginDialog.setState({open: false});
},
_cancelTouchTap: function(){
this.refs.loginDialog.setState({open: false});
},
_handleTouchTap() {
this.refs.loginDialog.setState({open: true});
}
});
module.exports = LoginDialog;
当用户登录时,一旦ajax调用返回成功,我想将头的loggedIn
状态切换为true。然而,我不太确定如何将数据从单独的文件(childlogin.jsx)传递到父文件(header.jsx)中。有人知道我如何做到这一点,以便为头创建动态UI吗?
一旦用户登录,标头组件中loggedIn的状态应返回true。一旦这是真的,我将显示一个不同于当前显示的标题。
您可以使用回调:
var Login = require(login.jsx)
const HeaderComponent = React.createClass({
getInitialState () {
return {
loggedIn: false,
};
},
render() {
return (
<Toolbar>
<ToolbarGroup key={1} float="right">
<Login onLoggedIn={this._handleLogIn}/>
</ToolbarGroup>
</Toolbar>
);
},
_handleLogIn: function (data) {
console.log(data);
this.setState({loggedIn: true});
}
});
module.exports = HeaderComponent;
var LoginDialog = React.createClass({
render() {
return (
<div>
<Dialog
title="Login"
ref="loginDialog"
autoScrollBodyContent = {true}
onRequestClose={this._cancelTouchTap}
open={this.state.open}>
<form action="/login" method="post" autoComplete="off">
<div>
<TextField hintText="Email Field" ref = "email" />
</div>
<div>
<TextField hintText="Password" type="password" ref = "password"/>
</div>
<div>
<RaisedButton label="Submit" onTouchTap={this._submitTouchTap}/>
<RaisedButton label="Cancel" onTouchTap={this._cancelTouchTap}/>
</div>
</form>
</Dialog>
<FlatButton label="Login" style={loginSpacing} primary={true} onTouchTap={this._handleTouchTap} />
</div>
);
},
_submitTouchTap: function(){
var primaryEmail = this.refs.email.getValue();
var password = this.refs.password.getValue();
var data = {
primaryEmail: primaryEmail,
password: password
};
$.ajax({
url: '/login',
dataType: 'json',
type: 'post',
data: data,
success: function(data) {
console.log(data);
this.props.onLoggedIn(data);
}.bind(this),
error: function(xhr, status, err) {
this.transitionTo('/login');
}.bind(this)
});
this.refs.loginDialog.setState({open: false});
},
_cancelTouchTap: function(){
this.refs.loginDialog.setState({open: false});
},
_handleTouchTap() {
this.refs.loginDialog.setState({open: true});
}
});
module.exports = LoginDialog;
相关文章:
- 在有角度的ui网格中设置动态列的问题
- 剑道UI下载列表:如何动态添加新元素
- 语义UI动态下拉菜单重新初始化问题
- jQuery mobile-动态更改ui页面背景颜色
- 动态创建的 jQuery UI 对话框错误后 jQuery 2.2.0 升级
- 动态模板 URL 在角度 ui 路由器中解析时
- AngularJS - ui.router - 如何在动态添加它们后重定向到所需的状态
- 关闭动态创建的 jQuery-ui 对话框
- WordPress + JQuery UI 选项卡 + 动态更改选项卡的宽度
- jQuery UI中的动态url,数据表
- jQuery UI排序无法使用动态表
- 在AngularJS UI路由器中动态更改视图
- 使用ui路由器实现动态URL路由的最佳方式是什么
- 如何将动态模板加载到$uibModal.open()(Angular UI引导程序)中
- jQuery UI-动态设置可调整大小元素的minHeight
- jquery ui动态对话框
- 在使用 react 和 material-ui 动态创建菜单项时,为什么 onTouchStart 会自动执行功能
- 如何使用JS,Telerik和Kendo UI动态启用数据标记
- 语义 UI 动态弹出窗口不起作用
- Jquery滑块UI动态步长