...
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 ... />
...
}
users = {
'Вася' : {
'job': 'Слесарь',
'phone' : 123345
},
'Петя' : {
'job': 'Слесарь',
'phone' : 789901
}
}
jobs = {
'Вася' : { 'job': 'Плотник' },
'Петя' : { 'job': 'Столяр' }
}
Object.assign(obj.users, users)
Object.assign(obj.users, jobs)
Object.assign(obj.users, users, jobs)
obj.users = object_assign(obj.users, users, jobs)
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()
}
}
}