【ReactNative】入門:從todo App開始(3)

1.ListView展示todo items

先閱讀文檔渣刷, 了解 ListView 是用來(lái)動(dòng)態(tài)展示豎向滑動(dòng)列表內(nèi)容的重要component。會(huì)用到的的方法有 renderRow, renderSeparator廉嚼。

首先import需要的ListView和Keyboard
import { ... ListView, Keyboard } from 'react-native';
要使用ListView展示列要添加兩行固定代碼:

constructor(props) {
    super(props);
        /* 固定 */
    const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
    this.state = {
      allComplete: false,
      value: '',
      items: [],
          /* 固定 */
      dataSource: ds.cloneWithRows([])
    }
...
}

const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
dataSource: ds.cloneWithRows([])
這兩行的作用是讓列表中內(nèi)容變化的時(shí)候渲染更有效率疲吸。這兩行只要要到listview就要這么寫。具體了解可以看文檔前鹅。

然后在render方法中找到content部分的view摘悴,并在其中添加ListView

<View style={styles.content}>
    <ListView
        style={styles.list}
        enableEmptySections
        dataSource={this.state.dataSource}
        onScroll={() => Keyboard.dismiss()}
        renderRow={({ Key, ...value}) => {
            return (
                <Row
                key={key}
                {...value}
                />
            )
    }}
        renderSeparator={(sectionId, rowId) => {
            return <View key={rowId} style={styles.separator} />
        }}
    />
</View>
 ...
... 
const styles = StyleSheet.create({
...省略之前的
list: {
    backgroundColor: '#FFF'
  },
separator: {
    borderWidth: 1,
    borderColor: "#F5F5F5"
  }
})

<ListView />中有兩個(gè)方法,renderRow中單獨(dú)把key拿出來(lái)舰绘,是因?yàn)閘istView的每一個(gè)list項(xiàng)都要有一個(gè)獨(dú)一無(wú)二key蹂喻。

2. 寫helper function:setSource()

每次this.state.items中的值發(fā)生變化(比如增添新的item或者刪除等)時(shí)需要re-render dataSource。

setSource(items, itemsDatasource, otherState = {}) {
    this.setState({
      items,
      dataSource: this.state.dataSource.cloneWithRows(itemsDatasource),
      ...otherState
    })
  }

替換handleToggleAllComplete,handleAddItem這兩個(gè)方法中的原來(lái)的setState為新的setSource方法捂寿。

handleToggleAllComplete() {
    const complete = !this.state.allComplete;
    const newItems = this.state.items.map((item) => ({
      ...item,
      complete
    }))
    this.setSource(newItems, newItems, { allComplete: complete });
  }
handleAddItem() {
    if(!this.state.value) return;
    const newItems = [
      ...this.state.items,
      {
        key: Date.now(),
        text: this.state.value,
        complete: false
      }
    ]
    this.setSource(newItems, newItems, { value: '' });
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末柠傍,一起剝皮案震驚了整個(gè)濱河市浴麻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖虐先,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異贩虾,居然都是意外死亡旅薄,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門顺又,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)更卒,“玉大人,你說(shuō)我怎么就攤上這事稚照□蹇眨” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵果录,是天一觀的道長(zhǎng)上枕。 經(jīng)常有香客問(wèn)我,道長(zhǎng)弱恒,這世上最難降的妖魔是什么辨萍? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮斤彼,結(jié)果婚禮上分瘦,老公的妹妹穿的比我還像新娘蘸泻。我一直安慰自己,他們只是感情好嘲玫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布悦施。 她就那樣靜靜地躺著,像睡著了一般去团。 火紅的嫁衣襯著肌膚如雪抡诞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天土陪,我揣著相機(jī)與錄音昼汗,去河邊找鬼。 笑死鬼雀,一個(gè)胖子當(dāng)著我的面吹牛顷窒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播源哩,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鞋吉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了励烦?” 一聲冷哼從身側(cè)響起谓着,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坛掠,沒(méi)想到半個(gè)月后赊锚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屉栓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年舷蒲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片系瓢。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡阿纤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出夷陋,到底是詐尸還是另有隱情,我是刑警寧澤胰锌,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布骗绕,位于F島的核電站,受9級(jí)特大地震影響资昧,放射性物質(zhì)發(fā)生泄漏酬土。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一格带、第九天 我趴在偏房一處隱蔽的房頂上張望撤缴。 院中可真熱鬧刹枉,春花似錦、人聲如沸屈呕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)虎眨。三九已至蟋软,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嗽桩,已是汗流浹背岳守。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碌冶,地道東北人湿痢。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像扑庞,于是被迫代替她去往敵國(guó)和親譬重。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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