From what I've gathered throughout discussions[1], React has seen some experiments with RxJS Observables (or something inspired by Observables), but they want to avoid the learning curve associated with reactive programming, keeping React beginner-friendly.
MVI architecture[2] in Cycle.js is derived from thinking about UIs holistically, and realizing how the user is connected to the application. The user gives events to the application, flowing through a thick layer of abstraction: from hardware (mouse) to operating system, to browser, to DOM, then finally to your application. Intent in MVI is another layer of abstraction between those user events and the program's state. The key here is to realize what is the source/owner of events: the actual human user. I think it makes no sense to think about events as owned by view components, it doesn't match reality. PS: MVI arch can be done with React as well, you can e.g. use document.querySelector().addEventListener() globally and remove events from components. This is how Cycle.js just leverages DOM events (and custom DOM events too).
React has tougher challenges though, since they want to contain both DOM and Native and whatnot event systems in the same abstraction.
From what I've gathered throughout discussions[1], React has seen some experiments with RxJS Observables (or something inspired by Observables), but they want to avoid the learning curve associated with reactive programming, keeping React beginner-friendly.
MVI architecture[2] in Cycle.js is derived from thinking about UIs holistically, and realizing how the user is connected to the application. The user gives events to the application, flowing through a thick layer of abstraction: from hardware (mouse) to operating system, to browser, to DOM, then finally to your application. Intent in MVI is another layer of abstraction between those user events and the program's state. The key here is to realize what is the source/owner of events: the actual human user. I think it makes no sense to think about events as owned by view components, it doesn't match reality. PS: MVI arch can be done with React as well, you can e.g. use document.querySelector().addEventListener() globally and remove events from components. This is how Cycle.js just leverages DOM events (and custom DOM events too).
React has tougher challenges though, since they want to contain both DOM and Native and whatnot event systems in the same abstraction.
[1] https://twitter.com/sebmarkbage/status/589966228938063873
[2] http://cycle.js.org/model-view-intent.html