This repository has been archived on 2026-03-31. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
memelee/utils/MobxRnnProvider.js
2018-04-05 15:17:53 -04:00

48 lines
1,008 B
JavaScript

/**
* MobxRnnProvider
*
* Provider that works for this navigation structure.
*
* (Thanks to github/@megahertz - https://gist.github.com/megahertz/3aad3adafa0f7d212b81f5e371863637)
*
* @copyright Ryan McGrath 2018
*/
import {Provider} from 'mobx-react/native';
const SPECIAL_REACT_KEYS = {
children: true,
key: true,
ref: true
};
export default class MobxRnnProvider extends Provider {
props: {
store: Object
};
context: {
mobxStores: Object
};
getChildContext() {
const stores = {};
// inherit stores
const baseStores = this.context.mobxStores;
if(baseStores) {
for(let key in baseStores) {
stores[key] = baseStores[key];
}
}
// add own stores
for(let key in this.props.store) {
if(!SPECIAL_REACT_KEYS[key]) {
stores[key] = this.props.store[key];
}
}
return {mobxStores: stores};
}
}