私は最近、Reactの学習を始めました。私はすぐに、機能と状態がいっぱいになっている膨れた親コンポーネントの問題に遭遇しました。最初はFluxを見て、Reduxを見ましたが、どちらも本当に圧倒的なソリューションのようでした。Reduxの代替
このような何かが行われていない理由を私は疑問に思って:
//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'でローカルに管理する必要があります。アクションやレデューサーとは別に、レフィックスも役立ちますので、地方の状態や(おそらく多くの)コンポーネント間で同期を保つ方法について考える必要はありません。 –