How would you recommend to learn Redux for someone who has small amount of experience in Functional Programming?
I comfortable with React and now I want to use Redux with it, because approach I currently apply uses events to notify React components when my models have changed, kinda like Pub/Sub bus. What I've noticed this approach doesn't scale very well and it's hard to reason about code when code base becomes bigger. I've read few articles about Redux and I think it can help me.
I have a lot of experience with OOP code. I worked with Ruby/Rails and focused a lot on good object oriented design.
I don't have a lot of experience with functional programming in general. I have some experience with Scheme, mostly for learning recursion.
I kinda understand lambda calculus and ideas behind it, I even wrote Applicative Y-Combinator using things like Tennent's Correspondence Principle and so on.
Also I have some experience with Haskell. I know what "Currying" and "Partially applied function" concepts mean and what they for.
For me it looks like that Redux is heavily based on ideas from Functional Programming.
I think my question consists from 2 parts:
What learning path would you recommend in order to be comfortable with ideas on which Redux based on?
What knowledge/skills should I have in order to be really comfortable working with Redux and build applications using it?
I know I wrote a lot here, but I think it will help you give me more specific advice using provided information.
If you thinking that there is some programming language where some particular ideas expressed better, feel free to mention it. I've found that sometimes it's very beneficial to get to roots of some idea (yes, I do have a lot of free time). For example learning Smalltalk made me a better Ruby developer and OO developer in general.
Thank you a lot for any suggestion/advice :-)
Redux is great and has given a new vocabulary for talking about things that is very functional and great. But middleware is an anomaly.
The idea that you can dispatch an action that will asynchronously dispatch other actions is very simple - but it muddles the idea of what an action is. It also confounds the search for what interleaving semantics are applied - for example - after I dispatch actions A and B, the store may recieve [B A' A'']
I find that it's best if Actions are thought of as items that are sequentially reduced into the store, and if a higher level streams library such as RxJS is in charge of interleaving streams with whatever semantics the application needs.
I think Redux is great in its core focus, but RxJS is great at controlling the behavior of an aggregation of streams, and is more flexible than middleware, so I recommend keeping asynchrony out of actions.
But I'm glad so many people have found their own particular ways of using it. And I love how it pushes the few modules of my system that are not pure functions out to the periphery.
Have you got around to playing with state management JS libraries other than Redux? How would you say they fare against Redux, or better what are a couple of things that a state management library other than Redux does better than Redux; and what are a couple of things that Redux does better than the counterparts?
Hey Andrew and Dan!
I was wondering what the relationship between ImmutableJS and React/Flux is like at facebook since they are both developed in house. I feel like ImmutableJS is a little overused sometimes but I was wondering to get some insight into how it is used at facebook and when you think it is appropriate for a Flux or Redux app
Hi Dan, I started learning ReactJS and now feel comfortable with the library. I know meteor fundamentals too. But I am facing a wall trying to create event based transitions from one component to another in SPA. Is redux the answer ? I know nothing about it yet. If yes, what are the best resources to learn?
I used Redux a bit about a year ago and haven't looked at it again until very recently. I'm wondering if there are any Redux specific tools/middleware in the ecosystem that you see others commonly using together? Any that you don't mind endorsing?
I remember using reselect, redux-logger, and redux-thunk..
I have two fundamental questions:
 What is your favourite approach for managing routing - do you recommend coupling routing with the layout similar to ember router or react-router or would you recommend for a minimal router that just intercepts history change and updates the state tree and lets the components handle the rest of the logic.
The context is a portal like application having routes in the order of a hundred.
 Do you have any high level recommendations for structuring the state tree ? While it is understandable that it should be as normalized as possible, I am more concerned about information that denotes the current state of the application. Does it make sense to have a subtree that identifies what is currently relevant to the application ?
Hi folks !
I'm building my first App with React+Redux and I fear I'm doing an anti-pattern. I use a middleware to perform my network requests (something like this https://github.com/agraboso/redux-api-middleware). So whenever I need to perform a request, I have to dispatch an action. Thus, I feel like my actions become just like regular functions, I may dispatch them even if I don't really need to update the state. Does this look like an anti-pattern, or does dispatching actions for basically any tasks make sense ?
Thanks ! :)