React Native 學(xué)習(xí)手記(二)

本章節(jié)主要介紹

  • 屬性
  • 狀態(tài)

屬性

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

export default class Bananas extends Component {
  render() {
    let pic = {
      uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg'
    };
    return (
      <Image source={pic} style={{width: 193, height: 110}} />
    );
  }
}

代碼中Image標(biāo)簽有兩個(gè)屬性锣披,sourcestyle精续,自定義組件怎么定義屬性呢?

答案是:不需要定義婚脱,直接使用今魔!

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

class Greeting extends Component {
  render() {
    return (
      <View style={{alignItems: 'center', marginTop: 50}}>
        <Text>Hello {this.props.name}!</Text>
      </View>
    );
  }
}

export default class LotsOfGreetings extends Component {
  render() {
    return (
      <View style={{alignItems: 'center'}}>
        <Greeting name='Rexxar' />
        <Greeting name='Jaina' />
        <Greeting name='Valeera' />
      </View>
    );
  }
}

代碼中Greeting為自定義組件,{this.props.name}可以直接使用屬性障贸。

個(gè)人覺得屬性不定義错森,直接使用,雖然靈活篮洁,但是沒有規(guī)范容易造成混亂涩维。所以建議在自定義組件上寫上注釋:該組件使用了那些屬性,有什么作用等信息袁波。

屬性由父組件指定瓦阐;如果沒有指定,直接使用也不會報(bào)錯篷牌。屬性一經(jīng)指定睡蟋,在組件的整個(gè)生命周期中就不會變化了娃磺。對于需要改變的數(shù)據(jù)薄湿,我們需要用到狀態(tài)

狀態(tài)

構(gòu)造組件的時(shí)候偷卧,需要先初始化狀態(tài)豺瘤。想要改變狀態(tài),需要調(diào)用this.setState方法听诸。

寫一個(gè)文字不斷閃爍的程序:因?yàn)槲淖植粫兓螅允褂脤傩裕尭附M件指定晌梨。顯示或隱藏的狀態(tài)隨著時(shí)間不斷變化桥嗤,所以應(yīng)該是一個(gè)屬性。設(shè)置一個(gè)定時(shí)器仔蝌,每隔一秒鐘設(shè)置一下顯示狀態(tài)泛领。

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

class Blink extends Component {
  state = {
    isShowingText: true
  };

  componentDidMount() {
    // 每1000毫秒對showText狀態(tài)做一次取反操作
    setInterval(() => {
      this.setState(previousState => {
        return {
          isShowingText: !previousState.isShowingText
        };
      });
    }, 1000);
  }

  render() {
    // 根據(jù)當(dāng)前showText的值決定是否顯示text內(nèi)容
    if (!this.state.isShowingText) {
      return null;
    }

    return (
      <Text>{this.props.text}</Text>
    );
  }
}

export default class BlinkApp extends Component {
  render() {
    return (
      <View>
        <Blink text='I love to blink' />
        <Blink text='Yes blinking is so great' />
        <Blink text='Why did they ever take this out of HTML' />
        <Blink text='Look at me look at me look at me' />
      </View>
    );
  }
}

componentDidMount方法為組件的生命周期方法,他會在組件剛加載完的時(shí)候調(diào)用一次敛惊,以后便不會再調(diào)用渊鞋。類似于Android Activity 的 onCreate 方法。

  • 一切頁面的變化都是state的變化。
  • 必須使用setState()方法改變狀態(tài)值锡宋,直接賦值儡湾,如:this.state.likes = 100;無效。
  • setState()方法是個(gè)合并操作执俩,不會影響其他狀態(tài)值徐钠。
  • setState()方法是個(gè)異步操作,不會立即生效役首。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尝丐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宋税,更是在濱河造成了極大的恐慌摊崭,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杰赛,死亡現(xiàn)場離奇詭異,居然都是意外死亡矮台,警方通過查閱死者的電腦和手機(jī)乏屯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瘦赫,“玉大人辰晕,你說我怎么就攤上這事∪肥” “怎么了含友?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長校辩。 經(jīng)常有香客問我窘问,道長,這世上最難降的妖魔是什么宜咒? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任惠赫,我火速辦了婚禮,結(jié)果婚禮上故黑,老公的妹妹穿的比我還像新娘儿咱。我一直安慰自己,他們只是感情好场晶,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布混埠。 她就那樣靜靜地躺著,像睡著了一般诗轻。 火紅的嫁衣襯著肌膚如雪钳宪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機(jī)與錄音使套,去河邊找鬼罐呼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛侦高,可吹牛的內(nèi)容都是我干的嫉柴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼奉呛,長吁一口氣:“原來是場噩夢啊……” “哼计螺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瞧壮,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤登馒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后咆槽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陈轿,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年秦忿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了麦射。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡灯谣,死狀恐怖潜秋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胎许,我是刑警寧澤峻呛,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站辜窑,受9級特大地震影響钩述,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谬擦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一切距、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧惨远,春花似錦谜悟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至贺氓,卻和暖如春蔚叨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工蔑水, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留邢锯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓搀别,卻偏偏與公主長得像丹擎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子歇父,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

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

  • 作為一個(gè)合格的開發(fā)者蒂培,不要只滿足于編寫了可以運(yùn)行的代碼。而要了解代碼背后的工作原理榜苫;不要只滿足于自己的程序...
    六個(gè)周閱讀 8,428評論 1 33
  • 前言 組件中的state具體是什么?怎么更改state的數(shù)據(jù)? setState函數(shù)分別接收對象以及函數(shù)有什么區(qū)別...
    itclanCoder閱讀 873評論 0 0
  • HTML模版 之后出現(xiàn)的React代碼嵌套入模版中护戳。 1. Hello world 這段代碼將一個(gè)一級標(biāo)題插入到指...
    ryanho84閱讀 6,222評論 0 9
  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南,這只是我在學(xué)習(xí)過程中的一些閱讀筆記垂睬,個(gè)人覺得該教程講解深入淺出媳荒,比目前大...
    leonaxiong閱讀 2,813評論 1 18
  • 以下內(nèi)容是我在學(xué)習(xí)和研究React時(shí),對React的特性驹饺、重點(diǎn)和注意事項(xiàng)的提取肺樟、精練和總結(jié),可以做為React特性...
    科研者閱讀 8,222評論 2 21