0
我期望在兄弟组件之间进行通信。想到的是用户名和密码字段是单独的React组件,另一个按钮组件会请求这些组件的值并运行登录检查。到目前为止我所拥有的(不是用于任何形式的交流,而不是缺乏搜索)在下面。按钮按下时反应同级组件通信(登录表单)
import React from 'react';
var LoginDataModel = require ('./loginDataModel');
var LoginPage = React.createClass({
getInitialState: function() { console.log(LoginDataModel); return LoginDataModel },
render: function() {
console.log(LoginDataModel.getUsername);
return (
<div className="container view-header">
<LoginForm/>
</div>
);
}
});
var LoginForm = React.createClass({
render: function() {
return (
<form className="form-signin" name="loginForms">
<UsernameInput/>
<PasswordInput/>
<SubmitButton/>
</form>
);
}
})
var UsernameInput = React.createClass({
getInitialState: function() {
return {userValue: ''};
},
handleChange: function(event) {
this.setState({userValue: event.target.value});
},
render: function() {
return (
<div className="form-group">
<label htmlFor="inputEmail">Username</label>
<input autofocus className="form-control" id="inputEmail" placeholder="Username" name="loginUsername" required type="text" ref="usernameInput" value={this.state.userValue} onChange={this.handleChange}></input>
</div>
);
}
});
var PasswordInput = React.createClass({
getInitialState: function() {
return {passValue: ''};
},
handleChange: function(event) {
this.setState({passValue: event.target.value});
},
render: function() {
return (
<div className="form-group">
<label htmlFor="inputPassword">Password</label>
<input autofocus className="form-control" id="inputPassword" placeholder="Password" name="loginPassword" required type="text" ref="passwordInput" value={this.state.passValue} onChange={this.handleChange}></input>
</div>
);
}
});
var SubmitButton = React.createClass({
contextTypes: {
userValue: React.PropTypes.any,
passValue: React.PropTypes.any
},
render: function() {
return (
<div>
Active Item: {this.context.userValue}
</div>
);
}
})
export default() => <LoginPage/>;
任何帮助将不胜感激!
编辑1:
忽略LoginDataModel,因为它是不用作我去一个单身,但反对决定,除非有人能告诉我我应该做的......