Skip to content

Navigation Menu

Sign in
Sign up
This repository was archived by the owner on Aug 20, 2019. It is now read-only.

Latest commit

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

react-native-immutable

using immutable.js library as store with react && react-native

More info of immutable.js


Installation

$ npm install react-native-immutable --save

Useage

react-native project
 |---index.ios.js
 |---App
 |---Actions
 	 |--- mainAction.js
 	 |--- userAction.js
 	 |--- articleAction.js
 	 |--- ...
 |---Stores
 	 |--- mainStore.js
 	 |--- userStore.js
 	 |--- articleStore.js
 	 |--- ...
 |---Webapi
 

index.ios.js

'use strict';
var React = require('react-native');
var { mixins } = require('react-native-immutable');
var StoreMixin = mixins.StoreMixin;
var appStore = require('./App/Stores/mainStore');
var appAction = require('./App/Actions/mainAction');
var {
 AppRegistry,
 StyleSheet,
 View,
 Text
} = React;
var App = React.createClass({
 mixins: [StoreMixin(appStore,"user","article")],
 onChangeUserName: function(){
 	appAction.emit('onChangeUserName', "wilson");
 },
 render: function() {
 
 console.log(this.state); // when store was changed, the state will change;
 
 console.log(this.state.username)
 
 return (
 	<View>
 		<Text onPress={this.onChangeUserName}>Change user name</Text>
 	</View>
 ) 
 } 
});
 
 
AppRegistry.registerComponent('DEMO', () => App);

mainAction.js

'use strict';
var {Action} = require('react-native-immutable');
// require userAction
require('./userAction')();
// require articleAction
require('./articleAction')();
module.exports = Action;

userAction.js

'use strict';
var Immutable = require('immutable');
var {Action} = require('react-native-immutable');
var appStore = require('../Stores/mainStore');
// 更新管理员
var userAction = function(){
	Action.on('onChangeUserName', function(name) {
		// study immutable.js visit http://facebook.github.io/immutable-js/
 	appStore.getStore("user").set('name', name );
	});
}
module.exports = userAction;

mainStore.js

'use strict'
var Immutable = require('immutable');
var {Store,Action} = require('react-native-immutable');
var React = require('react-native');
var appStore = module.exports = Store({
 user: require('./userStore'),
 article: require('./articleStore')
});
// Use AsyncStorage if u what
var {
 AsyncStorage
} = React;
var db_name = "app_store";
Action.on("_updateStore", function(data){
 AsyncStorage.setItem(db_name, JSON.stringify(data), function(err) {
 if (err) {
 console.error("error")
 }
 });
});
//initial Data
AsyncStorage.getItem(db_name, function(err, res) {
 if (err) {
 console.error("error")
 } else {
 if( typeof res == undefined ){
 Action.emit("_updateStore",appStore.getData());
 }else{
 appStore = Immutable.fromJS(JSON.parse(res));
 }
 }
});

userStore.js

'use strict'
module.exports = {
 name: ''
}

About

**[DEPRECATED]** using immutable.js library as store with react && react-native

Resources

Stars

13 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /