这是来自ReactJS的新入门者。无法获得容易掌握的资源促使我再次敲响SO。问题是这个。我有一个React组件,RegisterAccount
,当点击时会拍摄另一个组件(弹出窗口),允许用户填写注册帐户所需的详细信息。现在,一旦帐户成功注册,我想将注册的帐户添加为RegisterAccount
下的另一个组件。如何设置此通信?
//In RegisterAccount
<addAccount/> //pop-up
<accountAdded/> //if account added, then show this component
答案 0 :(得分:26)
我是React的新手。我也在寻找如何。我看到了article! 它像下面说的那样
render : function()
{
return (
<div>
{ true && <AddAccount /> }
{ false && <AccountAdded /> }
</div>
);
}
答案 1 :(得分:18)
如果我正确理解了您的问题,那么您正在尝试更新状态更改时要显示的组件(例如,用户创建帐户),该状态由子组件更改。这是一个显示孩子的基本示例 - &gt;家长沟通。
在这种情况下,RegisterAccount
组件是根组件。如果它是另一个组件的子节点,它也需要知道本例中使用的hasAccount
状态,那么状态可能会更好地存储在链的较高位置(并作为支柱传递下来)。
/** @jsx React.DOM */
var AddAccount = React.createClass({
handleRegistration: function() {
this.props.updateAccount(true);
},
render: function() {
return <a onClick={this.handleRegistration}>Create my account</a>;
}
});
var AccountAdded = React.createClass({
render: function() {
return <span>Account exists now</span>;
}
});
var RegisterAccount = React.createClass({
getInitialState: function() {
return {
hasAccount: false
};
},
updateAccountStatus: function(status) {
this.setState({
hasAccount: status
});
},
render: function() {
return (
<div>
{this.state.hasAccount ? <AccountAdded /> : <AddAccount updateAccount={this.updateAccountStatus} />}
</div>
);
}
});
React.renderComponent(<RegisterAccount />, document.body);
答案 2 :(得分:2)
您还可以执行以下操作,具体取决于属性条件返回true或false,您可以渲染或不渲染。这只是一个例子,条件可能来自方法等等。:
export class MyClass extends React.Component{
...
render(){
<div>
<img src='someSource' />
{this.state.condition ? <MyElement /> : null}
</div>
}
}
您还可以找到更详细的信息here。
答案 3 :(得分:1)
在渲染功能中,您可以使用有条件显示的标记变量......有点像这样:
render: function(){
var conditionalTag;
if(conditionalTag) <AccountAdded/>
return (
<AddAccount/>
{ conditionalTag }
)
}
只有当变量中包含jsx时才会呈现conditionalTag