react-native整合系列(一)——集成redux

image.png

首先需要安裝redux,react-redux,babel-plugin-transform-decorators-legacy

babel-plugin-transform-decorators-legacy是什么?
他是用來支持@寫法的

安裝完以后在.babelrc里面設置

{
  "presets": ["babel-preset-expo"],
  "env": {
    "development": {
      "plugins": ["transform-decorators-legacy"]
    }
  }
}

首先創建一個redux,我們就取名為num.redux.js


image.png

內容為

const ADD_TEM="升溫";

const initState={
    number:20
}

export function num(state=initState,action) {
    switch (action.type){
        case "升溫":
            return {...state,number:state.number+1}
        default:
            return state;
    }
}

export function addTem() {
    return {type:ADD_TEM};
}

然后創建一個reducer,把reducer函數去過來,交給combineReducers管理


image.png
import {combineReducers} from "redux";
import {num} from "./redux/num.redux";
export default combineReducers({num});

現在開始寫自己的文件,我們新建container文件夾,新建文件Temp.js

image.png

內容為

import React,{PureComponent} from "react";
import {View,Text,Button} from "react-native";
import {connect} from 'react-redux';

import {addTem} from "../redux/num.redux";

@connect(state=>state.num,{addTem})
export default class Temp extends PureComponent{
    render(){
        return (
            <View>
                <Text>現在溫度{this.props.number}</Text>
                <Button onPress={this.props.addTem} title={"升溫"}></Button>
            </View>
        )
    }
}

我們在App.js里面引入redux,react-redux,reducer,并寫成如下的樣子,在里面引入Temp即可

import React, { Component } from 'react';
import {
  Platform,
  StyleSheet,
  Text,
  View
} from 'react-native';
import {createStore} from "redux";
import {Provider} from "react-redux";

import reducer from "./reducer";
import Temp from "./container/Temp";

const store=createStore(reducer)
export default class App extends Component<Props> {
  render() {
    return (
        (<Provider store={store}>
          <Temp/>
        </Provider>)
    );
  }
} 

redux只能處理同步,要處理異步我們還要添加redux-thunk中間件

npm install redux-thunk --save-dev

然后使用applyMiddleware開啟thunk中間件

image.png

到這里reactnative引入redux基本就大工告成
如果有什么問題,歡迎大家給我留言

react-native整合系列(二)——集成Ant Design Mobile RN http://www.lxweimin.com/p/f8b6a07e108f
react-native整合系列(三)——集成react-native-router-flux http://www.lxweimin.com/p/35cdf1237017

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容