4 ms·
IIRC mobx is much easier to use than Redux. Any thoughts on this?
by kovek 5y ago
IIRC mobx is much easier to use than Redux. Any thoughts on this?
- acemarke 5y agoMobx and Redux Toolkit have some relatively similar capabilities. It largely depends on whether you prefer FP-style code and explicit logic (Redux), or OOP-style code and implicit update behavior (Mobx). Any particular aspects of Mobx you feel are easier to use, or parts of Redux you feel are harder? FWIW if you haven't looked at Redux recently, it's changed dramatically in the last couple years. "Modern Redux" with Redux Toolkit and the React-Redux hooks API is _much_ easier to use than the older-style "hand-written" patterns. With RTK, there's no `const ADD_TODO = "ADD_TODO"`, separate action creators, or object spreads for immutable updates. RTK's `createSlice` auto-generates action creators for you, and includes Immer for "mutating" immutable updates in reducers. You can see the differences in our rewritten Redux docs tutorials: - https://redux.js.org/tutorials/fundamentals/part-8-modern-redux https://redux.js.org/tutorials/fundamentals/part-8-modern-re... - https://redux.js.org/tutorials/essentials/part-2-app-structure https://redux.js.org/tutorials/essentials/part-2-app-structu... Also note that last year we released a new RTK Query data fetching and caching API that's included in Redux Toolkit, which is a full-featured data caching abstraction. Define some API endpoints, get React query and mutation hooks automatically: - https://redux.js.org/tutorials/essentials/part-7-rtk-query-basics https://redux.js.org/tutorials/essentials/part-7-rtk-query-b... - https://redux-toolkit.js.org/rtk-query/overview https://redux-toolkit.js.org/rtk-query/overview To be clear, Mobx is a great library, as are other packages like Zustand, Jotai, XState, and React Query. You should use whatever works best for your own use cases and preferences. But, it's also true that most people's opinions of Redux are based on the older patterns that have been obsolete since 2019, and we get a ton of highly positive feedback about RTK on a daily basis, with people telling us how much they love to use it.
- airtonix 5y agoI think no-one cares anymore... especially now that mobx-keystone exists.
- huckyaus 5y agoThe fact that you still have the energy to reply to all these "isn't Redux bad/old/dead?" comments is a testament to the patience it must have taken to get this release out. Thanks for all your efforts.
- Drew_ 5y agoRefactored a web app with traditional Redux logic to use Redux Toolkit and it really does make the logic much more pleasurable to read and maintain. I wasn't in love with the createAsyncThunk + builder.addCase pattern but it worked well enough in practice and isn't very hard to follow.
- acemarke 5y agoAnything particular you didn't like about that? FWIW we'd _like_ to add the ability to define thunks inside of `createSlice`, but there's TS type circularity issues we've been unable to solve, so that's kept us from making it work right. Also, I'd be curious to see if RTK Query can handle your data fetching use cases.
- Drew_ 5y agoIt was indeed the need to define the thunks outside of the slice that irked me, but with multiple thunks for a slice, I just wrote them as part of their own module.
- steve_adams_86 5y agoI’ve been running into circularity bugs lately as well… I think. It’s incredibly hard to tell if you’re doing something dumb or it’s a legitimate bug. Do you know of an issue that’s tracking a specific bug related to the circularity issue you’re seeing in createSlice?
- acemarke 5y agoNot specifically. The general problem we were running into is: - We recommend inferring `type RootState = ReturnType<typeof store.getState>` - That type comes from the slice reducers - Thunks need a `State` type passed in so they know what `getState` returns - But if you do that _inside_ of `createSlice`, TS can't know that `RootState` type yet, because we haven't constructed the slice reducer yet Here was the PR where we tried to come up with something: https://github.com/reduxjs/redux-toolkit/pull/637 https://github.com/reduxjs/redux-toolkit/pull/637 If you're seeing some other issue problem related to RTK, please go ahead and file an issue.