我最近開始學習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也有幫助,所以您不必考慮本地狀態,以及如何保持它(可能是很多)組件之間的同步。 –