对React Native中Reduce理解
React Native Redux学习 1.action /** isLoggedIn: store.userStore.isLoggedIn,user: store.userStore.user, } 使用步骤: 3.创建相关文件 1>.在store目录下创建index.js import { applyMiddleware,createStore } from 'redux'; import thunk from 'redux-thunk'; import { persistStore,autoRehydrate } from 'redux-persist'; import { AsyncStorage } from 'react-native'; import reducers from '../reducers'; const logger = store => next => action => { if(typeof action === 'function') console.log('dispatching a function'); else console.log('dispatching',action); let result = next(action); console.log('next state',store.getState()); return result; } let middlewares = [ logger,thunk ]; let createAppStore = applyMiddleware(...middlewares)(createStore); export default function configureStore(onComplete: ()=>void){ const store = autoRehydrate()(createAppStore)(reducers); let opt = { storage: AsyncStorage,transform: [],//whitelist: ['userStore'],}; persistStore(store,opt,onComplete); return store; } 2.创建入口文件,入口文件中使用react-redux中的Provider,在Provider中使用store import React,{ Component } from 'react'; let store = configureStore(); import Root from './root'; export default class App extends Component{ super(); this.state = { isLoading: true,store: configureStore(()=>{this.setState({isLoading: false})}) } } if(this.state.isLoading){ console.log('loading app'); return null; } /** return ( <Provider store={this.state.store}> <Root /> </Provider> ) } 3.创建Action import * as TYPES from './types'; // fake user data // for skip user // login dispatch({'type': TYPES.LOGGED_DOING}); let inner_get = fetch('http://www.baidu.com') .then((res)=>{ dispatch({'type': TYPES.LOGGED_IN,user: testUser}); }).catch((e)=>{ AlertIOS.alert(e.message); dispatch({'type': TYPES.LOGGED_ERROR,error: e}); }); } // skip login 'type': TYPES.LOGGED_IN,'user': skipUser, } // logout 'type': TYPES.LOGGED_OUT } 4.在页面js中调用action //将action导入页面,就可以从页面文件中使用action中的方法 reduce运行路线 页面中调用action->action将type发出去间接调用reduce->页面中使用connect将页面的state和store (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |