multireducer icon indicating copy to clipboard operation
multireducer copied to clipboard

dynamically create new copies

Open brennanerbz opened this issue 9 years ago • 4 comments

Is there a way to dynamically add/create copies?

Using your universal example, if the user took an action to create a new counter-- how would a new copy of the counter reducer be created?

brennanerbz avatar Jan 22 '16 23:01 brennanerbz

@brennanerbz I'm pretty sure multireducer does not support dynamic copies. I think you are better off writing your own reducer in that case and passing a key around that you can pass into your actions and use to access/manipulate many copies of your store data.

Look at how redux-form works for example - there is a single form reducer that creates many copies/instances of forms. I've used this pattern a lot and it works well. I've found that once you're comfortable writing reducers in that pattern there is little need for multireducer and it's almost always better to write one of these 'instance managing reducers' in case you need to support dynamic copies.

adailey14 avatar Jan 23 '16 11:01 adailey14

Yeah, not really supported. Interesting idea, though.

erikras avatar Jan 23 '16 11:01 erikras

Any movement on this? Doesn't seem to work, if you're using your mulitreducer in an array but the length is constantly changing. I am fetching an api, so sometimes the results is 5, 10, 12, 15 and so on...Any thoughts on how to solve that? Not unless I say something along the lines of:

const thereducer = combineReducers({
  toggleCollection: multireducer({
    toggle0 : toggle,
    toggle1 : toggle,
    toggle2 : toggle,
    toggle3 : toggle,
    toggle4 : toggle,
    toggle5 : toggle,
    toggle6 : toggle,
    toggle7 : toggle,
    toggle8 : toggle,
    toggle9 : toggle,
    toggle10 : toggle
  }),

jephjohnson avatar Mar 25 '17 01:03 jephjohnson

@adailey14 Do you have an example like that you could point me to? I have the same need myself quite often, but haven't found a good example yet. Usually end up having a byId map in the reducer, and every action has the key and needs to do a deep update in the map. Not the most elegant solution...

einarq avatar Nov 28 '17 09:11 einarq