我最近开始学习React,并且很快遇到了一个充满函数和状态的臃肿父组件的问题。起初,我看着Flux,然后我看着Redux,但都觉得真的很霸道。Redux Alternative
我很奇怪,为什么这样的事情没有完成:
//EventPropagator.js
let EventPropagator = {
registerListener(listenerObject){
if (this.listeners == null)
this.listeners = []
this.listeners.push(listenerObject)
},
fireEvent(eventObject){
let listenerList = this.listeners.filter(function(listener){
return listener.eventType === eventObject.eventType
})
listenerList.forEach((listener) => {
listener.callback(eventObject.payload)
})
}
}
export default EventPropagator
使用方法:成分简单registerListener
和fireEvent
:
//main.js
import EventPropagator from './events/EventPropagator'
EventPropagator.registerListener({
"eventType": "carry_coconut",
"callback": (payload) => {
// actually carry coconut
this.setState({"swallow_type": payload.swallow})
console.log(payload)
}
})
EventPropagator.fireEvent({
"eventType": "carry_coconut",
"payload": { "swallow": "african" }
})
这将使大量的去耦和状态可能的很容易被这种事件传递。这种方法有什么缺点?
Jumpstate看起来不错https://github.com/jumpsuit/jumpstate。 – imns
这种方法可以解决跨组件通信的问题,但是您仍然需要在'state'中本地管理每个组件数据。除了动作和缩减器之外,redux也有帮助,所以您不必考虑本地状态,以及如何保持它(可能是很多)组件之间的同步。 –