React Native學(xué)習(xí)之路(2)-基本語法

(1)基本的語法結(jié)構(gòu)
// 第一部分:引入組件
import React, { Component } from 'react',
import {
   AppRegistry,
   StyleSheet,
   View,
   Text
} from 'react-native';

// 第二部部分:通過class xxxx extends Component { render() { return () } };(構(gòu)造器)
// 通過新建組件來做類似于html結(jié)構(gòu)的內(nèi)容或颊,只能有一個<View>,所有的內(nèi)容都必須放在<view>中
export default class b extends Component {
   render() {
          return (
             <View style={ styles.aa}>
                   <Text style={styles.bb}>文字文字</Text>
             </View>
          ); 
     }
}

//第三部分:樣式,相當(dāng)于css
const styles = StyleSheet.create({
       aa: { backgrounColor: red }
       bb: { }
});

//第四部分:
AppRegistry.registerComponent( 'b', () => b );
(2)組件的生命周期
(1)組件的初始化,渲染,裝載完成奸披。
(2)組件運(yùn)行時(shí)的狀態(tài)(往往是用戶第一眼看到的狀態(tài))
(3)組件卸載
RN組件的生命周期
  • 生命周期小應(yīng)用:
/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */
import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View
} from 'react-native';
export default class bb extends Component {
  constructor(props) {
      super(props)
      this.state = { time: 0 }
  }
  timesPlus() {
    let times = this.state.time;
    times++;
    this.setState({ time: times });
  }
  componentWillMount() {
    console.log("組件即將安裝-componentWillMount");
  }
  componentDidMount() {
    console.log("組件安裝后-componentDidMount");
  }
//在componentWillMount和componentDidMount之間會執(zhí)行render的console.log
  shouldComponentUpdate() {
    console.log("shouldComponentUpdate");
    return true;
  }
  componentWillUpdate() {
    console.log("componentWillUpdate");  
  }
//在componentWillUpdate和componentDidUpdate之間會執(zhí)行render的console.log
// 這里需要點(diǎn)擊才會實(shí)現(xiàn)  
  componentDidUpdate() {
    console.log("componentDidUpdate");
  }
  render() {
    console.log("render");
    return (
      <View style={styles.container}>
        <Text style={styles.welcome} onPress={this.timesPlus.bind(this)}>
          你點(diǎn)擊我試試
        </Text>
        <Text style={styles.instructions}>
          你點(diǎn)我 { this.state.time } 多少次了
        </Text>
      </View>
    );
  }
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
})
AppRegistry.registerComponent('bb', () => bb);

效果圖:

點(diǎn)擊實(shí)現(xiàn)數(shù)字+1

測試結(jié)果
(3) Props(屬性)
  • 我們可以把任意合法的JavaScript表達(dá)式通過括號嵌入到JSX語句中谦秧。
  • View組件 常用作其他組件的容器,來幫助控制布局和樣式慨代。
  • 在組件中通過 this.props.(屬性名) 來得到屬性值;
import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';
class Greeting extends Component {
  render() {
    return (
      <Text>Hello {this.props.name}!</Text>   //通過this.props.(屬性名) 來得到name屬性
    );
  }
}
class LotsOfGreetings extends Component {
  render() {
    return (
      <View style={{alignItems: 'center'}}>
        <Greeting name='Rexxar' />      //調(diào)用Greeting組件
        <Greeting name='Jaina' />       //調(diào)用Greeting組件
        <Greeting name='Valeera' />    //調(diào)用Greeting組件
      </View>
    );
  }
}
AppRegistry.registerComponent('LotsOfGreetings', () => LotsOfGreetings);
(4) State(狀態(tài))
  • 你需要在 constructor 中初始化 state 啸如,然后在需要修改時(shí)調(diào)用 setState 方法侍匙。
import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';
class Blink extends Component {
 
 constructor(props) {    //在constructor中初始化state
    super(props);  )      //這一句不能省略,照抄即可
    this.state = { showText: true };
    // 每1000毫秒對showText狀態(tài)做一次取反操作
    setInterval(() => {
      this.setState(previousState => {
        return { showText: !previousState.showText };
      });
    }, 1000);
  }

  render() {
    // 根據(jù)當(dāng)前showText的值決定是否顯示text內(nèi)容
    let display = this.state.showText ? this.props.text : ' ';
    return (
      <Text>{display}</Text>
    );
  }
}
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>
    );
  }
}
AppRegistry.registerComponent('BlinkApp', () => BlinkApp);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叮雳,一起剝皮案震驚了整個濱河市想暗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌帘不,老刑警劉巖说莫,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異寞焙,居然都是意外死亡储狭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門捣郊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辽狈,“玉大人,你說我怎么就攤上這事呛牲」蚊龋” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵娘扩,是天一觀的道長着茸。 經(jīng)常有香客問我,道長琐旁,這世上最難降的妖魔是什么涮阔? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮旋膳,結(jié)果婚禮上澎语,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好擅羞,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布尸变。 她就那樣靜靜地躺著,像睡著了一般减俏。 火紅的嫁衣襯著肌膚如雪召烂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天娃承,我揣著相機(jī)與錄音奏夫,去河邊找鬼。 笑死历筝,一個胖子當(dāng)著我的面吹牛酗昼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播梳猪,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼麻削,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了春弥?” 一聲冷哼從身側(cè)響起呛哟,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匿沛,沒想到半個月后扫责,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逃呼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年鳖孤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抡笼。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡淌铐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蔫缸,到底是詐尸還是另有隱情,我是刑警寧澤际起,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布拾碌,位于F島的核電站,受9級特大地震影響街望,放射性物質(zhì)發(fā)生泄漏校翔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一灾前、第九天 我趴在偏房一處隱蔽的房頂上張望防症。 院中可真熱鬧,春花似錦、人聲如沸蔫敲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奈嘿。三九已至貌虾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裙犹,已是汗流浹背尽狠。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叶圃,地道東北人袄膏。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像掺冠,于是被迫代替她去往敵國和親沉馆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359

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

  • 本筆記基于React官方文檔赫舒,當(dāng)前React版本號為15.4.0悍及。 1. 安裝 1.1 嘗試 開始之前可以先去co...
    Awey閱讀 7,726評論 14 128
  • 安裝: 概述 React起源于FaceBook的內(nèi)部項(xiàng)目,因?yàn)樵摴緦κ袌錾纤械腏avaScript MVC框架...
    姒沝無痕閱讀 722評論 0 0
  • 最近看了一本關(guān)于學(xué)習(xí)方法論的書,強(qiáng)調(diào)了記筆記和堅(jiān)持的重要性接癌。這幾天也剛好在學(xué)習(xí)React心赶,所以我打算每天堅(jiān)持一篇R...
    gaoer1938閱讀 1,690評論 0 5
  • 以下內(nèi)容是我在學(xué)習(xí)和研究React時(shí),對React的特性缺猛、重點(diǎn)和注意事項(xiàng)的提取缨叫、精練和總結(jié),可以做為React特性...
    科研者閱讀 8,242評論 2 21
  • GUIDS 第一章 為什么使用React荔燎? React 一個提供了用戶接口的JavaScript庫耻姥。 誕生于Fac...
    jplyue閱讀 3,544評論 1 11