React Native筆記2——Props和State

先放上React 中文網(wǎng)的鏈接吧 , 畢竟一開始就看官方文檔也是個好習慣 , 雖然講的東西有點不是那么的通俗 , 以后的筆記講以Android的角度來記錄React Native

Prop

  1. 基本用法
  • 定義: 屬性 , 不可修改
  • 翻譯: final對象,只允許初始化不允許修改

就像是傳值一樣, RN中可以引用組件(Compoment)并傳遞參數(shù) , 而Prop就是其中傳遞參數(shù)的角色之一, 看下面的例子:

//定義了一個組件
class SayHello extends Component {
  render() {
    return (
      // 這里使用prop來作為接收參數(shù) , 相當于Android中的對象
      <Text>Hello {this.props.name}!</Text>
    );
  }
}

//在主組件中應(yīng)用
class Awesome extends Component {
  render() {
    return (
      <View>
        // 在這里直接傳值
        <SayHello name='Rexxar' />
        <SayHello name='Jaina' />
      </View>
    );
  }
}

有了基本使用后 , 我們可以再看一下prop的其他使用方法.

  1. 使用默認屬性

在被引用的組建中使用如下代碼, 指定屬性的默認值

class SayHello extends Component {
   static defaultProps = {
        name:123
        birth:20170823
    }
    .....
}
  1. 屬性約束

屬性約束可以來約束屬性的類型 , 以及必填項, 在使用propTypes時需要引入一個包:
import * as PropTypes from "react-native/flow/prop-types";

class SayHello extends Component {
    static propTypes={
          name:PropTypes.number.isRequired,
          age:PropTypes.string,
          sex:PropTypes.boolean.isRequired
    }
    ....
}

State

  1. 介紹
  • 定義: 狀態(tài) , 可以改變
  • 翻譯: 普通的對象
    首先也是要在被引用的組建中設(shè)置默認值 , 有兩種初始化方法:
class SayHello extends Component {
    //方式1  直接定義
    state = {
        name: '二狗'
    }

    constructor(prop) {
        super(prop)
        //方式2  構(gòu)造方法中定義
        this.state = {
            name: '二狗'
        }
    }
    render() {
        return (
            <Text>{this.state.name} say hello</Text>
        );
    }
}
  1. 用法

這里寫一個文本顯示一個數(shù)字 , 單擊本文數(shù)字自增 , 關(guān)鍵方法已在代碼中標出

export default class RNDemo3 extends Component {
    constructor(prop) {
        super(prop);
        this.state = {
            size: 10
        }
    }

    render() {
        return (
            <View style={styles.container}>
                <Text style={{fontSize: this.state.size}}
                      // 為Text添加點擊事件
                      onPress={() => {
                          // 此處要設(shè)置state的時候 , 需要調(diào)用this.state
                          this.setState({
                              size: this.state.size + 10
                          });
                      }}
                >state的值為{this.state.size}</Text>
            </View>
        );
    }
}

Class

這個不用翻譯了昂 , 直接就是類 , 只不過是ES6里的類 , 但大體上的用法是差不多的 , 都是面向?qū)ο? 也都有繼承.

  • 類的基本使用
export default class Student{
    constructor(name,age,summary){
        this.name=name;
        this.age=age;
        this.summary=summary;
    }
    getDescription(){
        return '姓名:'+this.name+"  年齡:"+this.age+"  簡介:"+this.summary;
    }
}

上面的代碼定義了一個Student的類 , 有個構(gòu)造方法傳入三個參數(shù), 將參數(shù)保存起來; 在getDescription方法中使用這些變量. 類開頭的export defalut表示將類導出 , 這樣其他的js文件中就可以通過import使用該類了:
import Student from './Student'; (這里的Student類在根目錄下)

export default class RNDemo3 extends Component {

    constructor(){
        super();
        this.stu=new Student('夜的記憶',12,'主c666');
    }
    render() {
        return (
            <View style={styles.container}>
                <Text>{this.stu.getDescription()}</Text>
            </View>
        );
    }
}
  • 繼承
    面向?qū)ο螽斎簧俨涣死^承 , 這里的繼承也和Android中的類似:
import Student from "./Student";

export default class Minuit extends Student{

    constructor(name){
        super(name,21,"Minuit");
        this.name=name;
    }

    getDescription() {
        return this.name+"  "+super.getDescription();
    }
}

定義子類Minuit, 繼承Student并重寫egtDescription方法, 該子類的用法不再贅述

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脐瑰,一起剝皮案震驚了整個濱河市啸澡,隨后出現(xiàn)的幾起案子源请,更是在濱河造成了極大的恐慌,老刑警劉巖霹疫,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡卜壕,警方通過查閱死者的電腦和手機寥掐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門靴寂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人召耘,你說我怎么就攤上這事百炬。” “怎么了污它?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵剖踊,是天一觀的道長。 經(jīng)常有香客問我衫贬,道長德澈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任固惯,我火速辦了婚禮圃验,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缝呕。我一直安慰自己澳窑,他們只是感情好,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布供常。 她就那樣靜靜地躺著摊聋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪栈暇。 梳的紋絲不亂的頭發(fā)上麻裁,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音源祈,去河邊找鬼煎源。 笑死,一個胖子當著我的面吹牛香缺,可吹牛的內(nèi)容都是我干的手销。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼图张,長吁一口氣:“原來是場噩夢啊……” “哼锋拖!你這毒婦竟也來了诈悍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤兽埃,失蹤者是張志新(化名)和其女友劉穎侥钳,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柄错,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡舷夺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了售貌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冕房。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖趁矾,靈堂內(nèi)的尸體忽然破棺而出耙册,到底是詐尸還是另有隱情,我是刑警寧澤毫捣,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布详拙,位于F島的核電站,受9級特大地震影響蔓同,放射性物質(zhì)發(fā)生泄漏饶辙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一斑粱、第九天 我趴在偏房一處隱蔽的房頂上張望弃揽。 院中可真熱鬧,春花似錦则北、人聲如沸矿微。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涌矢。三九已至,卻和暖如春快骗,著一層夾襖步出監(jiān)牢的瞬間娜庇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工方篮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留名秀,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓藕溅,卻偏偏與公主長得像匕得,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蜈垮,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理耗跛,服務(wù)發(fā)現(xiàn)裕照,斷路器攒发,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • 深入JSX date:20170412筆記原文其實JSX是React.createElement(componen...
    gaoer1938閱讀 8,050評論 2 35
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法调塌,類相關(guān)的語法,內(nèi)部類的語法惠猿,繼承相關(guān)的語法羔砾,異常的語法,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • https://mp.weixin.qq.com/s?__biz=MzAxMzE2Mjc2Ng==&mid=265...
    coderK閱讀 144評論 0 0
  • 諾言久偶妖,久不及期頤姜凄,摘紅花,倚紅墻趾访,未曾想态秧,弱冠四年已相向。 少年游扼鞋,游已過長江申鱼,尋古剎,和古腔云头,抬頭望捐友,黃河盡頭...
    二月古剎閱讀 151評論 0 1