二.React Native語(yǔ)法:Props和State

一.Props屬性:

組件創(chuàng)建的時(shí)候需要用不同的參數(shù)進(jìn)行定制框产,這些定制的參數(shù)就是props(屬性)蜡娶,可為組件內(nèi)部屬性磅废,也可為外部屬性锅棕。

1.Props(屬性):繼承系統(tǒng)組件的屬性(內(nèi)部屬性)
直接上代碼學(xué)習(xí)與講解
如下代碼所示:

import React, {Component} from 'react';
import {AppRegistry,Image} from 'react-native';

class Bananas extends Component {
  render(){
    let  pic ={uri:'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg'
    };

    return (
        // 這里的source和style就是Image組件的屬性
       <Image source={pic} style ={{width:193,height:110}} />
    );
  }
}

// 注意:這里的MyDemo一定是我們的項(xiàng)目名稱(chēng)拙泽,切記!
AppRegistry.registerComponent('MyDemo', () =>Bananas);
Props屬性學(xué)習(xí)之圖片展示.png

2.Props(屬性):自定義組件的屬性學(xué)習(xí)(外部調(diào)用屬性)
如下代碼所示:

import React, {Component} from  'react';
// Text 和View的基本控件
// View組件常用來(lái)作為其他組件的容器哲戚,來(lái)幫助控制布局和樣式奔滑。
import {AppRegistry,Text,View} from 'react-native';

// 自定義控件(接收外部傳入屬性艾岂,顯示屬性?xún)?nèi)容)
class Greeting extends Component{
  render(){
    return (
        // this.props.name 相當(dāng)于調(diào)用了Greeting自定義控件的name屬性進(jìn)行展示顺少。JSX語(yǔ)法
        <Text>Hello {this.props.name}!</Text>
    );
  }
}

// 使用自定義控件展示數(shù)據(jù)
class  LotsOfGreetings extends Component {
  render(){
    return(
        <View style={{alignItems:'center'}}>
          <Greeting name='zhangsan'/>
          <Greeting name='lisi'/>
          <Greeting name='wangwu'/>
        </View>
    );
  }
}

AppRegistry.registerComponent('MyDemo',() =>LotsOfGreetings);

Props屬性學(xué)習(xí)之View的組件展示.png

二.State 狀態(tài):

指的是組件在其生命周期中需要用狀態(tài)來(lái)標(biāo)記不同的數(shù)據(jù)改變結(jié)果,這種狀態(tài)就是State王浴;
其一般用于內(nèi)部更改數(shù)據(jù)所用脆炎。

需要在組件類(lèi)中用constructor()方法:初始化方法來(lái)初始化組件開(kāi)始的狀態(tài)。

如何制作一段不停閃爍的文字氓辣?
分析props和state的使用問(wèn)題:文字內(nèi)容在初始化render方法中一開(kāi)始就創(chuàng)建好了秒裕,不需要后期更改,可以用props來(lái)解決钞啸;而文字的顯示和隱藏是不同的2種狀態(tài)几蜻,所以需要用state來(lái)解決!
分析完畢体斩,看具體的代碼和效果如下:
如下代碼所示:

import React, {Component} from 'react';
import {AppRegistry,Text,View} from 'react-native';

class Blink extends Component {
  // 初始化方法
  constructor(props){
    super(props);
    // 初始化狀態(tài)值內(nèi)容梭稚,根據(jù)狀態(tài)的值來(lái)決定文字是否顯示
    this.state ={showText:true};

    // 以下2種定時(shí)器方法都可以!
    // setInterval(() => {
    //     this.setState(previousState => {
    //         return { showText: !previousState.showText };
    //     });
    // }, 1000);


    setInterval((() => {this.setState({showText:!this.state.showText});}),1000);
  }

  render(){
    let display =this.state.showText?this.props.name:' ';
    return(
        <Text>{display}</Text>
    );
  }
}

// 定義一個(gè)根組件
class Hello extends Component {
  render(){
    return(
        <View style ={{alignItems:'center'}}>
          <Blink name ='Hello Word!'/>
          <Blink name ='Hello Boss!'/>
          <Blink name ='Hello Student!'/>
        </View>
    );
  }
}

AppRegistry.registerComponent('MyDemo',() => Hello);

其運(yùn)行后的效果如下:

State 狀態(tài)之制作一段不停閃爍的文字.gif

溫馨提示:注意以上所有代碼中的注冊(cè)方法:

AppRegistry.registerComponent('MyDemo',() => Hello);

其中的MyDemo絮吵,一定要替換為您自己創(chuàng)建項(xiàng)目中的工程的名字弧烤!

三.學(xué)習(xí)React Native遇到的坑

1.關(guān)于編碼的習(xí)慣解釋?zhuān)?/p>

1.1. Ctrl +C,Ctrl +V的習(xí)慣對(duì)于React Native 的頭文件引入不合適蹬敲!
如下代碼為React Native引入頭文件方式:

import React, {Component} from 'react';
import {AppRegistry,Text,View} from 'react-native';

注意:其中的Text和View暇昂,分別表示其下面的控件的引入莺戒。
實(shí)際開(kāi)發(fā)過(guò)程中,如原項(xiàng)目引入的是Text急波,而實(shí)際項(xiàng)目中需要引入Image等从铲,結(jié)果直接導(dǎo)入,就會(huì)造成新項(xiàng)目找不到Image的引入路徑幔崖,就會(huì)報(bào)錯(cuò)食店,而且也不是特別明顯!

1.2. 類(lèi)似的如下:
關(guān)于寫(xiě)代碼時(shí)什么時(shí)候?yàn)锳ppRegistry赏寇,什么時(shí)候?yàn)锳ppRegister的問(wèn)題吉嫩,也是不小心造成的,如下正確注冊(cè)方式:

AppRegistry.registerComponent('MyDemo', () =>Bananas);
同時(shí)請(qǐng)注意這里的注冊(cè)的2個(gè)參數(shù)的表示嗅定!

MyDemo :一定是我們的項(xiàng)目名稱(chēng)自娩,切記!
不然會(huì)報(bào)錯(cuò)如下:


報(bào)錯(cuò):Application 您的項(xiàng)目名 has not been registered.png

Bananas:指的是注冊(cè)的基本組件渠退!

2.關(guān)于iOS平臺(tái)下iOS9之后的http網(wǎng)絡(luò)請(qǐng)求的安全Key的問(wèn)題:

關(guān)于這里的安全Key的位置處于info.plist文件中忙迁,其類(lèi)型分為以下3種情況

2.1 React Native 初始的(Xcode初始的)安全key為:

空的,哈哈碎乃!

2.2 Xcode開(kāi)發(fā)中要求的文件的安全Key為:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

2.3 React Native 更改后可用的(Xcode初始的)安全key為:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSExceptionDomains</key>
            <dict>
                <key>api.xxx.com</key>
                <dict>
                    <key>NSExceptionAllowsInsecureHTTPLoads</key>
                    <true/>
                </dict>
        </dict>
    </dict>

可以看出姊扔,以上三者的安全key是不一樣的,而自己誤認(rèn)為Xcode可以開(kāi)發(fā)的是與React Native的安全Key是一致的梅誓,導(dǎo)致了問(wèn)題的拖延恰梢!最后通過(guò)網(wǎng)絡(luò)資料解決了這個(gè)問(wèn)題!
總之:React Native 開(kāi)發(fā)中采用的安全Key為第2.3種的情況梗掰!

以上為自己學(xué)習(xí)和開(kāi)發(fā)React Native過(guò)程中遇到的?坑嵌言,一個(gè)一個(gè)的解決了哦,愉快開(kāi)啟開(kāi)發(fā)模式吧及穗!

好的摧茴,后面會(huì)把React Native 的有關(guān)開(kāi)發(fā)中的布局,樣式以及熱更新等常見(jiàn)策略全部分享出來(lái)哦埂陆,歡迎新手和大神吐槽苛白,哈哈!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末焚虱,一起剝皮案震驚了整個(gè)濱河市购裙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌著摔,老刑警劉巖缓窜,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡禾锤,警方通過(guò)查閱死者的電腦和手機(jī)私股,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)恩掷,“玉大人倡鲸,你說(shuō)我怎么就攤上這事』颇铮” “怎么了峭状?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)逼争。 經(jīng)常有香客問(wèn)我优床,道長(zhǎng),這世上最難降的妖魔是什么誓焦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任胆敞,我火速辦了婚禮,結(jié)果婚禮上杂伟,老公的妹妹穿的比我還像新娘移层。我一直安慰自己,他們只是感情好赫粥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布观话。 她就那樣靜靜地躺著,像睡著了一般越平。 火紅的嫁衣襯著肌膚如雪频蛔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天喧笔,我揣著相機(jī)與錄音帽驯,去河邊找鬼龟再。 笑死书闸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的利凑。 我是一名探鬼主播浆劲,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼哀澈!你這毒婦竟也來(lái)了牌借?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤割按,失蹤者是張志新(化名)和其女友劉穎膨报,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡现柠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年院领,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片够吩。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡比然,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出周循,到底是詐尸還是另有隱情强法,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布湾笛,位于F島的核電站饮怯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嚎研。R本人自食惡果不足惜硕淑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嘉赎。 院中可真熱鬧置媳,春花似錦、人聲如沸公条。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)靶橱。三九已至寥袭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間关霸,已是汗流浹背传黄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留队寇,地道東北人膘掰。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像佳遣,于是被迫代替她去往敵國(guó)和親识埋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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