dvajs做爲一個基於redux的狀態管理框架,在react中的表現仍是很不錯的,若是咱們想要在react-native應用中使用dvajs該怎麼作呢?react
首先安裝dva-core和react-redux:git
npm i -S dva-core react-redux
dva-core是dvajs的核心部分,可以很好的和其餘react-native組件在一塊兒工做。github
dva-core和dva在提供的方法上有一些區別,不過在使用思路上是徹底同樣的。因爲基本沒有什麼難點,這裏就直接貼代碼了。typescript
如下是一個react-navigation3.x結合dva-core的一個配置實例:npm
import * as React from 'react'; import { createAppContainer, createBottomTabNavigator, } from 'react-navigation'; import Index from './Index'; import Home from './pages/Home'; import Cart from './pages/Cart'; import { Provider } from 'react-redux'; import { create } from 'dva-core'; const indexModel = { namespace: 'index', state: { count: 1 }, effects: {}, reducers: { edit(state, { count }) { state.count += count; return { ...state }; }, }, }; const models = [indexModel]; const app = create(); // 建立dva實例,可傳遞配置參數。https://dvajs.com/api/#app-dva-opts models.forEach((o) => { // 裝載models對象 app.model(o); }); app.start(); // 實例初始化 const store = app._store; // 獲取redux的store對象供react-redux使用 const appNavigator = createBottomTabNavigator({ Index, Home, Cart, }); const App = createAppContainer(appNavigator); export default class Container extends React.Component { public render() { return ( <Provider store={store}> <App/> </Provider> ); } }
本文代碼:https://github.com/axel10/react-native-dva-typescript-templateredux