Meteor-like methods for React Native.
What is it for ?
The purpose of this library is :
- to set up and maintain a ddp connection with a ddp server, freeing the developer from having to do it on their own.
- be fully compatible with react-native and help react-native developers.
- to match with Meteor documentation used with React.
Install
npm i --save electron-meteor@latest
!! See detailed installation guide
Example usage
;; Meteor;//do this only once { return <Text>todotitle</Text> ; } { const settings todosReady = thisdata; <View> <Text>settingstitle</Text> !todosReady && <Text>Not ready</Text> <MeteorListView collection="todos" selector=done: true options=sort: createdAt: -1 renderRow=thisrenderRow /> </View> } { const handle = Meteor; Meteor; return todosReady: handle settings: Meteor ;}
createContainer
Since Meteor 1.3, createContainer is the recommended way to go to populate your React Classes. Very similar to getMeteorData but your separate container components from presentational components.
Example
; { const pendingOrders = thisprops; //... ); } { return pendingOrders: Meteor ;} Orders
connectMeteor && getMeteorData
connectMeteor is a React Mixin which enables getMeteorData (the old way of populating meteor data into your components).
Example
; /** Uses decorators (see detailed installation to activate it)* Or use : class Todos extends Component { ... } connectMeteor(Todos); export default Todos; */ @connectMeteor { return pendingOrders: Meteor ; } { const pendingOrders = thisprops; //... ); }
Reactive variables
These variables can be used inside getMeteorData or createContainer. They will be populated into your component if they change.
- Meteor.subscribe : returns an handle. !! If the component which called subscribe is unmounted, the subscription is automatically canceled.
- Meteor.collection(collectionName)
- Meteor.user()
- Meteor.userId()
- Meteor.status()
- Meteor.loggingIn()
Additionals collection methods
These methods (except update) work offline. That means that elements are correctly updated offline, and when you reconnect to ddp, Meteor calls are taken care of.
- Meteor.collection(collectionName)
MeteorListView Component
Same as ListView Component but does not need dataSource and accepts three arguments :
collection
string requiredselector
[string / object]options
objectlistViewRef
[string / function] ref to ListView component.
Example usage
<MeteorListView collection="todos" selector=done: true options=sort: createdAt: -1 renderRow=thisrenderItem //...other listview props/>
MeteorComplexListView Component
Same as ListView Component but does not need dataSource and accepts one argument. You may need it if you make complex requests combining multiples collections.
elements
function required : a reactive function which returns an array of elements.listViewRef
[string / function] ref to ListView component.
Example usage
<MeteorComplexListView elements={return Meteor} renderRow=thisrenderItem //...other listview props/>
API
Meteor DDP connection
Meteor.connect(endpoint, options)
Connect to a DDP server. You only have to do this once in your app.
Arguments
url
string requiredoptions
object Available options are :- autoConnect boolean [true] whether to establish the connection to the server upon instantiation. When false, one can manually establish the connection with the Meteor.ddp.connect method.
- autoReconnect boolean [true] whether to try to reconnect to the server when the socket connection closes, unless the closing was initiated by a call to the disconnect method.
- reconnectInterval number [10000] the interval in ms between reconnection attempts.
Meteor.disconnect()
Disconnect from the DDP server.
Meteor methods
- Meteor.call
- Meteor.loginWithPassword (Please note that user is auto-resigned in - like in Meteor Web applications - thanks to React Native AsyncStorage.)
- Meteor.logout
- Meteor.logoutOtherClients
Meteor.Accounts
- Accounts.createUser
- Accounts.changePassword
- Accounts.forgotPassword
- Accounts.onLogin
- Accounts.onLoginFailure
Meteor.ddp
Once connected to the ddp server, you can access every method available in ddp.js.
- Meteor.ddp.on('connected')
- Meteor.ddp.on('added')
- Meteor.ddp.on('changed')
- ...
CollectionFS
- Meteor.FSCollection(collectionName) : Helper for Meteor-CollectionFS. Full documentation here
- This plugin also exposes a FSCollectionImagesPreloader component which helps you preload every image you want in CollectionFS (only available on ios)
; <FSCollectionImagesPreloader collection="imagesFiles" selector=metadataowner: XXX/>
react-native-router-flux
- Github repository
- npm i --save electron-meteor-router-flux@latest
- Custom scene renderer which allows to select tab scene to show depending from app state. It could be useful for authentication, restricted scenes, etc.
Want to help ?
Pull Requests and issues reported are welcome ! :)