新建ReactNative項(xiàng)目和配置Redux

接觸React Native 也差不多一年昔穴,沒(méi)有寫過(guò)文章。所以決定自己寫一些文章來(lái)記錄一下成長(zhǎng)記錄剧蚣。好吧支竹,廢話不說(shuō),直接開干鸠按。

環(huán)境

Mac OS X版本:Mac OS X安裝React Native環(huán)境點(diǎn)擊進(jìn)入....
Windows版本:Windows系統(tǒng)安裝React Native環(huán)境點(diǎn)擊進(jìn)入...

新建項(xiàng)目

一條命令礼搁。(注意:輸入命令前,換到自己想要的cd下面目尖,不然init找不到項(xiàng)目)

react-native init HelloWorld

HelloWorld 為你的項(xiàng)目名字馒吴。如果被長(zhǎng)城阻礙的話,用換個(gè)好點(diǎn)的網(wǎng)絡(luò),或者使用科技上網(wǎng)


目錄架構(gòu)

安裝和運(yùn)行

安裝到模擬器分兩種方法:

1饮戳、命令安裝 (使用命令前豪治,必須先開啟對(duì)應(yīng)的模擬器)

react-native run-ios
react-native run-android

2、直接在Android Studio 和 Xcode 運(yùn)行
android:用Android Studio 打開項(xiàng)目里面的android文件夾(注意并不是整個(gè)項(xiàng)目)
ios:直接打開ios文件夾里面的.xcodeproj文件扯罐。

Redux

Redux的相關(guān)介紹就不多說(shuō)负拟。有興趣的同志們可以自行谷歌。
首先我們先安裝三個(gè)依賴庫(kù)歹河。

npm install --save redux
npm install --save redux-thunk
npm install --save react-redux

對(duì)應(yīng)的GitHub地址:
redux:https://github.com/reactjs/redux
redux-thunk:https://github.com/gaearon/redux-thunk
react-redux:https://github.com/reactjs/react-redux

安裝完畢之后掩浙,查看一下package.json文件是否安裝成功


新建文件

看你的項(xiàng)目需求而定。不一定按照我的文件格式


首先我們要搞定的是:app/containers/app.js

/**
 * Created by function on 2017/3/9.
 */
import React, {Component} from 'react';


//配置store
import {createStore, applyMiddleware, combineReducers} from 'redux';
import {Provider} from 'react-redux';
import thunk from 'redux-thunk';
import * as reducers from '../reducers';
import CounterApp from './counterApp';


/**
 * 添加中間件
 * combineReducers方法启泣,把reducers組合成一個(gè)傳遞給store涣脚。
 * 配置文件,不用死記硬背寥茫,理解才是重點(diǎn)
 * 應(yīng)用中應(yīng)有且僅有一個(gè) store遣蚀。
 */
const createStoreWithMiddleware = applyMiddleware(thunk)(createStore);
const reducer = combineReducers(reducers);
const store = createStoreWithMiddleware(reducer);

export default class App extends Component {
    render() {
        return (
            <Provider store={store}>
                <CounterApp />
            </Provider>
        );
    }
}

這邊要注意的是combineReducers這個(gè)方法把reducers組合成一個(gè)傳遞給store,我們來(lái)看下reducers這個(gè)文件夾的index文件纱耻,路徑是:app/reducers/index

/**
 * Created by function on 2017/3/9.
 */
import counter from './counter';

export {
    counter
};

我這邊把所寫的Redux都會(huì)在這里export芭梯,這樣我們每創(chuàng)建一個(gè)Redux就在著這個(gè)文件export就可以了

 <Provider store={store}>
     <CounterApp />
 </Provider>

然后Provider組件包裹的是主頁(yè)面<CounterApp/>

試驗(yàn)Redux是否可用

既然配了Redux,我們?cè)趺打?yàn)證它是否可以使用了呢弄喘?我們一起來(lái)做一個(gè)小小的功能玖喘,app/components/Button.js

/**
 * Created by function on 2017/3/9.
 */
import React, {Component} from 'react';
import {StyleSheet, View, Text, TouchableOpacity} from 'react-native';

/**
 * 簡(jiǎn)單封裝一個(gè)Button
 * text:顯示的內(nèi)容
 * onPress:回調(diào)
 */
export default class Button extends Component {

    constructor(props) {
        super(props);
    }

    render() {
        const {text, onPress} = this.props;

        return (
            <View>
                <TouchableOpacity onPress={onPress} style={styles.button}>
                    <Text>{text}</Text>
                </TouchableOpacity>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    button: {
        width: 100,
        height: 30,
        padding: 10,
        backgroundColor: 'lightgray',
        alignItems: 'center',
        justifyContent: 'center',
        margin: 3
    }
});
/**
 * Created by function on 2017/3/9.
 */
import React, {Component} from 'react';
import {bindActionCreators} from 'redux';
import Button from '../components/Button';
import * as counterActions from '../actions/counterActions';
import {connect} from 'react-redux';
import {StyleSheet, View, Text, TouchableOpacity} from 'react-native';
// @connect(
//     state => ({
//         state: state.counter
//     }), {counterActions})
class CounterApp extends Component {

    constructor(props) {
        super(props);
    }

    onAdd = () => {
        const {counterActions} = this.props;
        counterActions.increment()
    };

    onDel = () => {
        const {counterActions} = this.props;
        counterActions.decrement()
    };

    render() {
        const {counter} = this.props;
        return (
            <View style={{flex: 1, alignItems: 'center', justifyContent: 'center' }}>
                <Text>{counter.count}</Text>
                <Button onPress={this.onAdd} text={'add'}/>
                <Button onPress={this.onDel} text={'del'}/>
            </View>
        );
    }
}

// function select (store) {
//     return {
//         counter: store.counter
//     }
// }

function mapStateToProps(state) {
    return {
        counter: state.counter
    }
}

function mapDispatchToProps(dispatch) {
    return {
        counterActions: bindActionCreators(counterActions, dispatch)
    }
}

export default connect(mapStateToProps, mapDispatchToProps)(CounterApp);

mapStateToProps關(guān)聯(lián)對(duì)應(yīng)的redux

function mapStateToProps(state) {
    return {
        counter: state.counter
    }
}

mapDispatchToProps綁定對(duì)應(yīng)的action

function mapDispatchToProps(dispatch) {
    return {
        counterActions: bindActionCreators(counterActions, dispatch)
    }
}

如果不寫bindActionCreators這個(gè)方法綁定dispatch
頁(yè)面上就要這樣調(diào)用

this.props.dispach(對(duì)應(yīng)的action)

把他們都connect頁(yè)面

export default connect(mapStateToProps, mapDispatchToProps)(CounterApp);

效果圖

本文哪里有不完善的地方,歡迎技術(shù)交流
此文章demo 17.03.10 鏈接: https://pan.baidu.com/s/1jIE4XGM 密碼: tgke
github會(huì)隨著更新而更新https://github.com/LinsanityZ/EnjoyGossip

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蘑志,一起剝皮案震驚了整個(gè)濱河市累奈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌急但,老刑警劉巖澎媒,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異波桩,居然都是意外死亡戒努,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門镐躲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)储玫,“玉大人,你說(shuō)我怎么就攤上這事萤皂∪銮睿” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵敌蚜,是天一觀的道長(zhǎng)桥滨。 經(jīng)常有香客問(wèn)我窝爪,道長(zhǎng),這世上最難降的妖魔是什么齐媒? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任蒲每,我火速辦了婚禮,結(jié)果婚禮上喻括,老公的妹妹穿的比我還像新娘邀杏。我一直安慰自己,他們只是感情好唬血,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布望蜡。 她就那樣靜靜地躺著,像睡著了一般拷恨。 火紅的嫁衣襯著肌膚如雪脖律。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天腕侄,我揣著相機(jī)與錄音小泉,去河邊找鬼。 笑死冕杠,一個(gè)胖子當(dāng)著我的面吹牛微姊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播分预,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼兢交,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了笼痹?” 一聲冷哼從身側(cè)響起配喳,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凳干,沒(méi)想到半個(gè)月后界逛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纺座,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溉潭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片净响。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖喳瓣,靈堂內(nèi)的尸體忽然破棺而出馋贤,到底是詐尸還是另有隱情,我是刑警寧澤畏陕,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布配乓,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏犹芹。R本人自食惡果不足惜崎页,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腰埂。 院中可真熱鬧飒焦,春花似錦、人聲如沸屿笼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)驴一。三九已至休雌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肝断,已是汗流浹背杈曲。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留孝情,地道東北人鱼蝉。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像箫荡,于是被迫代替她去往敵國(guó)和親魁亦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,304評(píng)論 25 707
  • afinalAfinal是一個(gè)android的ioc羔挡,orm框架 https://github.com/yangf...
    passiontim閱讀 15,439評(píng)論 2 45
  • 錢洁奈, 是一個(gè)衡量物品或者勞動(dòng)價(jià)值的工具,也是區(qū)分人的階級(jí)的一種工具绞灼, 比如利术, 人可以分為有錢人和沒(méi)錢人。 有錢和沒(méi)...
    艾小墨閱讀 245評(píng)論 0 1
  • 最近的自己猶如神經(jīng)病 就像曾經(jīng)說(shuō)的 當(dāng)占有欲 掌控力占主導(dǎo) 所有的一切都會(huì)改變 我忘記了喜歡 愛(ài) 剩余的是對(duì)比...
    Rubysjeal閱讀 248評(píng)論 7 1
  • 第二卷: (六)厚德載物蝗锥,雅量容人跃洛。 原文: 地之穢者多生物,水之清者常無(wú)魚终议;故君子當(dāng)存含垢納污之量汇竭,不可持 好潔...
    愛(ài)文字的小藥師閱讀 4,561評(píng)論 10 37