{"id":41437137,"url":"https://github.com/icrosil/remob","last_synced_at":"2026-01-23T14:42:31.128Z","repository":{"id":57353155,"uuid":"116261782","full_name":"icrosil/remob","owner":"icrosil","description":"Rethinking of Redux and MobX","archived":false,"fork":false,"pushed_at":"2018-11-04T21:05:47.000Z","size":421,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-23T04:04:53.784Z","etag":null,"topics":["mobx","react","reducer","redux","redux-modules"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/icrosil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-04T13:13:47.000Z","updated_at":"2023-03-08T04:28:50.000Z","dependencies_parsed_at":"2022-09-18T23:22:24.523Z","dependency_job_id":null,"html_url":"https://github.com/icrosil/remob","commit_stats":null,"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"purl":"pkg:github/icrosil/remob","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icrosil%2Fremob","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icrosil%2Fremob/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icrosil%2Fremob/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icrosil%2Fremob/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/icrosil","download_url":"https://codeload.github.com/icrosil/remob/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/icrosil%2Fremob/sbom","scorecard":{"id":480668,"data":{"date":"2025-08-11","repo":{"name":"github.com/icrosil/remob","commit":"a9b652aab902a00088486096b51db1617255621b"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"103 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-6chw-6frg-f759","Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-fwr7-v2mv-hh25","Warn: Project is vulnerable to: GHSA-qwcr-r2fm-qrc7","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-cwfw-4gq5-mrqx","Warn: Project is vulnerable to: GHSA-g95f-p29q-9xw4","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-x9w5-v3q2-3rhw","Warn: Project is vulnerable to: GHSA-w8qv-6jwh-64r5","Warn: Project is vulnerable to: GHSA-pxg6-pf52-xh8x","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-gxpj-cx7g-858c","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-phwq-j96m-2c2q","Warn: Project is vulnerable to: GHSA-ghr5-ch3p-vcr6","Warn: Project is vulnerable to: GHSA-vh7m-p724-62c2","Warn: Project is vulnerable to: GHSA-r9p9-mrjm-926w","Warn: Project is vulnerable to: GHSA-434g-2637-qmqr","Warn: Project is vulnerable to: GHSA-49q7-c7j4-3p7m","Warn: Project is vulnerable to: GHSA-977x-g7h5-7qgw","Warn: Project is vulnerable to: GHSA-f7q4-pwc6-w24p","Warn: Project is vulnerable to: GHSA-fc9h-whq2-v747","Warn: Project is vulnerable to: GHSA-vjh7-7g9h-fjfh","Warn: Project is vulnerable to: GHSA-3gx7-xhv7-5mx3","Warn: Project is vulnerable to: GHSA-rv95-896h-c2vc","Warn: Project is vulnerable to: GHSA-qw6h-vgh9-j6wx","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-8r6j-v8pm-fqw3","Warn: Project is vulnerable to: MAL-2023-462","Warn: Project is vulnerable to: GHSA-q42p-pg8m-cqh6","Warn: Project is vulnerable to: GHSA-w457-6q6x-cgp9","Warn: Project is vulnerable to: GHSA-62gr-4qp9-h98f","Warn: Project is vulnerable to: GHSA-f52g-6jhx-586p","Warn: Project is vulnerable to: GHSA-2cf5-4w76-r9qv","Warn: Project is vulnerable to: GHSA-3cqr-58rm-57f8","Warn: Project is vulnerable to: GHSA-g9r4-xpmj-mj65","Warn: Project is vulnerable to: GHSA-q2c6-c6pm-g3gh","Warn: Project is vulnerable to: GHSA-765h-qjxv-5f44","Warn: Project is vulnerable to: GHSA-f2jv-r9rf-7988","Warn: Project is vulnerable to: GHSA-c429-5p7v-vgjp","Warn: Project is vulnerable to: GHSA-43f8-2h32-f4cj","Warn: Project is vulnerable to: GHSA-pc5p-h8pf-mvwp","Warn: Project is vulnerable to: GHSA-qqgx-2p2h-9c37","Warn: Project is vulnerable to: GHSA-2pr6-76vf-7546","Warn: Project is vulnerable to: GHSA-8j8c-7jfh-h6hx","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-6c8f-qphg-qjgp","Warn: Project is vulnerable to: GHSA-76p3-8jx3-jpfq","Warn: Project is vulnerable to: GHSA-3rfm-jhwj-7488","Warn: Project is vulnerable to: GHSA-hhq3-ff78-jv3g","Warn: Project is vulnerable to: GHSA-jf85-cpcp-j695","Warn: Project is vulnerable to: GHSA-fvqr-27wr-82fm","Warn: Project is vulnerable to: GHSA-4xc9-xhrj-v574","Warn: Project is vulnerable to: GHSA-x5rq-j2xg-h7qm","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-h726-x36v-rx45","Warn: Project is vulnerable to: GHSA-4xcv-9jjx-gfj3","Warn: Project is vulnerable to: GHSA-7wpw-2hjm-89gp","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-fhjf-83wg-r2j9","Warn: Project is vulnerable to: GHSA-5fw9-fq32-wv5p","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-9wv6-86v2-598j","Warn: Project is vulnerable to: GHSA-rhx6-c78j-4q9w","Warn: Project is vulnerable to: GHSA-h7cp-r72f-jxh6","Warn: Project is vulnerable to: GHSA-v62p-rq8g-8h59","Warn: Project is vulnerable to: GHSA-566m-qj78-rww5","Warn: Project is vulnerable to: GHSA-7fh5-64p2-3v2j","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-m6fv-jmcg-4jfg","Warn: Project is vulnerable to: GHSA-h9rv-jmmf-4pgx","Warn: Project is vulnerable to: GHSA-hxcc-f52p-wc94","Warn: Project is vulnerable to: GHSA-cm22-4g7w-348p","Warn: Project is vulnerable to: GHSA-4g88-fppr-53pp","Warn: Project is vulnerable to: GHSA-4jqc-8m5r-9rpr","Warn: Project is vulnerable to: GHSA-vx3p-948g-6vhq","Warn: Project is vulnerable to: GHSA-3jfq-g458-7qm9","Warn: Project is vulnerable to: GHSA-r628-mhmh-qjhw","Warn: Project is vulnerable to: GHSA-9r2w-394v-53qc","Warn: Project is vulnerable to: GHSA-5955-9wpr-37jh","Warn: Project is vulnerable to: GHSA-qq89-hq3f-393p","Warn: Project is vulnerable to: GHSA-f5x3-32g6-xq36","Warn: Project is vulnerable to: GHSA-52f5-9888-hmc6","Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-pgr8-jg6h-8gw6","Warn: Project is vulnerable to: GHSA-6fc8-4gx4-v693","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q","Warn: Project is vulnerable to: GHSA-c4w7-xm78-47vh","Warn: Project is vulnerable to: GHSA-p9pc-299p-vxgp"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T16:31:59.134Z","repository_id":57353155,"created_at":"2025-08-19T16:31:59.134Z","updated_at":"2025-08-19T16:31:59.134Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28694457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T14:15:13.573Z","status":"ssl_error","status_checked_at":"2026-01-23T14:09:05.534Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mobx","react","reducer","redux","redux-modules"],"created_at":"2026-01-23T14:42:27.164Z","updated_at":"2026-01-23T14:42:31.105Z","avatar_url":"https://github.com/icrosil.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# remob\nRethinking of Redux and MobX\n\n[![Build Status](https://travis-ci.org/icrosil/remob.svg?branch=master)](https://travis-ci.org/icrosil/remob)  [![Coverage Status](https://coveralls.io/repos/github/icrosil/remob/badge.svg?branch=master)](https://coveralls.io/github/icrosil/remob?branch=master)  [![Maintainability](https://api.codeclimate.com/v1/badges/6fe830dc12447fa3922b/maintainability)](https://codeclimate.com/github/icrosil/remob/maintainability)  [![Version](https://img.shields.io/npm/v/remob.svg)](https://www.npmjs.com/package/remob) [![dependencies Status](https://david-dm.org/icrosil/remob/status.svg)](https://david-dm.org/icrosil/remob) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)\n\n## what is remob?\nremob - is an experiment to improve usability for redux. It is build upon combining simple state management from Redux and effective usability of MobX and decorator power.\n\n## why to remob?\nIn comparing giants like Redux and MobX you can find pros and cons in usage for both sides, but what if we can take pros out of them? As general idea I was wondering if it possible to give Redux more structure and easiness in usage like i felt using MobX but without overwhelmed observables.\n\n#### Redux\nRedux is good and gives correct vision of state management, flow of data, consequences of changes.\nBut also from the box it gives such a big amount of options to create your application that could be a bit frustrating. Biggest concerns I would like to change are:\n- lot of code to init your `not an array` store\n  - when your app grows enough you can find yourself in situation when you have to create lot of dumb files/code to achieve simple logic and align to your structure.\n- action types produces namespace issue and you have to almost duplicate initial state to actions and so on\n- switch case need within reducer\n  - sure here you can use additional `redux-actions` or similar but its additional wrapper\n- small HOR usage\n  - you cannot just have one reducer and simply reuse it from another one, to have it you need HOR and then use it like HOR everywhere, but in my opinion this should be on top of everything right from start\n- `mapState` \u0026 `mapDispatch`\n  - i've seen a lot of having this guys near to components even with possibility to have near store, this selectors and actions should just live in store. So store should have ability to combine it\n\n#### MobX\nMobX is also a good option for state management with pros and cons.\nUsage of `classes` and `decorators` are just beautiful with combining all needed data inside of instance - selectors, actions, etc.\nBut using MobX after Redux you probably faced with lack of unidirectional flow, immutability and all pretty things Redux has.\nObservables as pattern are good, but predictability and unidirectional flow worth more.\n\n#### remob\nSo basically this is the wrapper upon Redux with decorator usage.\nEnjoy to use it =)\n\n## v0 -\u003e v1\nPlease add `setCombiner` to your code.\nCheck out `setCombiner` doc [here](https://github.com/icrosil/remob#setcombiner).\n\n## Installation\n- `yarn add remob`\n- `import remob from 'remob';`\n\n## API\nRemob has 8 exports from index file, they are:\n- Reducer\n- action\n- selector\n- thunk\n- inject\n- combineRemob\n- connectRemob\n- setConnector\n- setCombiner\n\n#### Reducer\nIs a main class to start with. When you want to create new remob you should import `Reducer` and extend remob from `Reducer` or another remob. Inside of `Reducer` live only registrators and reducer implementation.\n```\nimport { Reducer } from remob;\n\nclass Counter extends Reducer {\n  initialState = { field: 0 };\n}\n\nexport default new Counter();\n```\n\n##### debug\nTo see all actions and selectors that remob registered, you can use\n`remob.debug()` method - this will `console.log` every registered action and selector.\n\n#### action\nIs a decorator to use within Reducer. You may use it like function `@action()` or like statement `@action`.\nUsing this on some function in remob will produce next actions:\n- registrate action to remob and reducer\n- make this function to be dispatchable\n\nimplementation of actionable functions should be like reducer that will be fired only on this action. It takes 2 params as arguments state and action.\n\naction could be an implementation for part of state, for this case you have to pass property name to first param - `@action('field')`\n\n```\nimport { Reducer, action } from remob;\n\nclass Counter extends Reducer {\n  initialState = {\n    field: 0,\n    deep: {\n      field: 42,\n    }\n  };\n  // @action would do the same\n  @action() increment(state) {\n    return {\n      ...state,\n      field: state.field + 1,\n    }\n  }\n  @action('field') incrementField(state) {\n    return state.field + 1;\n  }\n  // both actions will work just equal.\n\n  // deep path exist, _.get powered.\n  @action('deep.field') incrementDeepField(state) {\n    return state.deep.field + 1;\n  }\n  // functions supported, more dynamic for your needed flow\n  @action(state =\u003e (Math.random() \u003e 0.5 ? 'field' : 'deep.field')) changeRandomPart(state) {\n    return Math.random();\n  }\n}\n\nexport default new Counter();\n```\n\n#### selector\nIs a decorator to write selectors from state to components.\n```\nimport { Reducer, selector } from remob;\n\nclass Counter extends Reducer {\n  initialState = { field: 0 };\n  @selector incremented(state) {\n    return state.field + 1;\n  }\n}\n\nexport default new Counter();\n```\n\n#### thunk\nIs a decorator very similar to action but with one change - it has different dispatchable method and it will call function implementation as argument to dispatch. Usable to create side effects within thunk middleware.\n```\nimport { Reducer, thunk } from remob;\n\nclass Counter extends Reducer {\n  initialState = { field: 0 };\n  @thunk decrement(dispatch, getState) {\n    ...\n  }\n}\n\nexport default new Counter();\n```\n#### inject\nIs a function to inject remobs into component using connect. It takes object of remobs you want to pass, get every action/selector/thunk/state and mapps dispatch and state and them merges to 1 object.\n\nKeys of argument should equal to how you created stores of them and value should be a remob.\n```\nimport { connect } from 'react-redux'\nimport { inject } from remob;\n\nimport Component from './Component'\nimport remobImplementation from '../store/remob'\n\nexport default connect(...inject({\n  remob: remobImplementation,\n}))(Component)\n```\n#### combineRemob\nIs a function to combine remobs for store creating, it takes reducer implementation of every remob passed.\n\n```\nimport { combineRemob } from 'remob'\nimport { createStore } from 'redux'\n\nimport stores from '../stores'\n\ncreateStore(combineRemob(stores))\n```\n\nMake sure you pass uniq names for stores as it will throw an error if you have any duplicate.\n\n#### connectRemob\nFor easy connect stores to components use `connectRemob` method.\nIt is simple facade over connector (such as `react-redux` provides).\n`connectRemob` doesn't have default connector so you have to pass your connector.\nPlease have a look to `setConnector` method.\n\nInterface gives ability to pass remobs in 3 ways:\n- strings\n- remob\n- object with remobs\n\n```\n// assume 3 stores already exist named 'store1', 'store2', 'store3'\nimport { connectRemob } from 'remob'\nimport store2 from '../stores/store2'\n\nconst Component = props =\u003e \u003cYourAwesomeComponent {...props} /\u003e;\n\n// string store\nconnectRemob('store1')(YourAwesomeComponent);\n// instance store\nconnectRemob(store2)(YourAwesomeComponent);\n// object store\nconnectRemob({ store4: store2 })(YourAwesomeComponent);\n```\n\nIt will automatically get already registered remobs and pass them to component.\nNames will be taken from `combineRemob` by keys assigned to each remob.\nYou can override this names by passing object of remobs.\n\n#### setConnector\nDefines what exact connector will be used on `connectRemob` method.\n\n```\nimport { setConnector } from 'remob';\nimport { connect } from 'react-redux';\n\nsetConnector(connect);\n```\n\n#### setCombiner\nDefines what exact combineReducers for injection.\nSetup this on state initiating.\n\n```\nimport { setCombiner } from 'remob';\nimport { combineReducers } from 'redux';\n\nsetCombiner(combineReducers);\n```\n\n## influence\n- [redux](https://redux.js.org/)\n- [redux-knife-manager](https://github.com/madetheforcebewithyou/redux-knife-manager)\n- [MobX](https://github.com/mobxjs/mobx)\n- [react-easy-state](https://github.com/solkimicreb/react-easy-state)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficrosil%2Fremob","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ficrosil%2Fremob","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ficrosil%2Fremob/lists"}