class SignupModal ... {
...
handleSignupButton(){
// do something
if(this.props.onSignup)
this.props.onSignup()
}
render(){
...
<Button .... onClick={this.handleSignupButton} />
...
}
}
class SomeComponent ... {
...
handleSignup(){
// do something
}
render(){
...
<SignupModal ... onSignup={this.handleSignup} />
...
}
...
}
<MenuList getId={this.getAllIds} />
...
handleChange(source, event){
// source содержит имя элемента, сгенерировавшего событие: Comp1 или Comp2
...
}
render(){
...
<OneComponent ... onSomeEvent={this.handleChange.bind(this, "Comp1"} />
<OtherComponent ... onAnotherEvent={this.handleChange.bind(this, "Comp2"} />
...
}
...
var SomeComp = React.createClass({
...
})
window.SomeComp = SomeComp
...
render(){
...
<SomeComp ... />
...
}
class Parent {
....
handleChildTick(someData){
// обработать данные от потомка
// (указание на конкретного потомка можно вставить в структуру someData)
}
....
render(){
....
<Child ... onTick={this.handleChildTick} />
....
}
}
class Child {
....
someAction(){
....
if(this.props.onTick)
this.props.onTick(someData)
....
}
}
class SomeComponent {
...
componentDidMount() {
Store.addListener("DATA_CHANGED", this.handleChanged)
Store.addListener("DATA_LOADED", this.handleLoaded)
}
...
handleLoaded(){
// just force rendering (you can do something smart beforehand though)
this.forceUpdate()
}
...
renderContent(){
// your usual render code
...
}
renderLoading(){
return <Icon type="spinner" spin />
}
render(){
if(Store.isLoading()){
return this.renderLoading()
} else {
return this.renderContent()
}
}
}
class RootComponent {
....
collectData(someData){
// обработать данные от потомка
// (указание на конкретного потомка можно вставить в структуру someData)
}
....
render(){
....
<ColBootstrap ... onStateChange={this.collectData} />
....
}
}
class ColBootstrap {
....
render(){
....
<ClientageBlock... onStateChange={this.props.onStateChange} />
....
}
}
class ClientageBlock {
....
someAction(){
....
if(this.props.onStateChange)
this.props.onStateChange(someData)
....
}
}