Comments (2)
Hey, @lorefnon,
Thanks for the issue—this has come up a couple times, and I should probably include it in the docs. I actually had the same thought when I first started experimenting with flux; they definitely are another layer of indirection, though I'm now not so sure they're superfluous.
You actually can dispatch actions directly if you want via getFlux().dispatcher.dispatch
, but that couples the component to:
- the dispatcher implementation
- the action type (i.e. the string itself)
- the format of the payload
In a larger application, the extra indirection will make changes to the action/data layer easier without having to change your application's components. It also allows changes to the Fluxxor dispatcher without needing to change either (1) your components (because they don't know about the dispatcher at all) or (2) your action methods (because this.dispatch
is bound to an internal object that handles actually doing the dispatch for you).
Related to the first point above, the actions also give you semantically meaningful method names: flux.actions.addUrl(url)
instead of flux.dispatcher.dispatch(Actions.ADD_URL, {url: url})
.
See also Creating Semantic Actions on the React site:
As you can see, we really would not need to have the helpers AppDispatcher.handleViewAction() or TodoActions.create(). We could, in theory, call AppDispatcher.dispatch() directly and provide a payload. But as our application grows, having these helpers keeps the code clean and semantic. It's just a lot cleaner to write TodoActions.destroy(id) instead of writing a whole lot of things that our TodoItem shouldn't have to know about.
Hope that helps; this is a really interesting topic to me, so feel free to keep thinking about/discussing it!
from fluxxor.
Thanks for the reply, @BinaryMuse . I see where you are coming from, thank you for taking the time to elaborate.
from fluxxor.
Related Issues (20)
- resetting stores HOT 2
- Question: asynchronous route transition HOT 1
- Inconsistent description of stores? HOT 4
- Fluxxor and React Router 1.x and ES6 HOT 7
- this.isMounted is not a function HOT 2
- Best practices for nested models HOT 1
- React warning after update to 1.7.2 HOT 1
- fluxxor with react router 1rc HOT 16
- Can one use Fluxxor with React Native? HOT 2
- Use instanceOf or shape in context types and add propTypes
- Wait until async request completes HOT 2
- Routing examples no longer work with latest version of React Router HOT 3
- Lost events with StoreWatchMixin during ComponentWillMount -> ComponentDidMount HOT 1
- Documentation for setting dispatch interceptor is out of date HOT 3
- In the Async Example not clear how to support add action which needed to call out to server HOT 1
- React-Router v4 and Fluxxor
- Current lodash dependency has a CVE
- Compatibility with React 16 HOT 2
- Typo in a link on the "What is Flux" page
- sdasdasdas
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fluxxor.