2017-04-24 34 views
1

這裏是我的代碼是不工作... 我想顯示用戶名,但我的應用程序給我的空白信息我是新的,如果你得到任何錯誤在我的問題上請評論併爲我的糟糕英語感到抱歉。ListViewrenderRow或綁定(這)不是ListView的工作給我造成的空白

import React, {Component} from 'react'; 
import {AppRegistry, ListView, Text, View, StyleSheet} from 'react-native'; 
const users = [ 
    { name: 'John Doe'}, 
    { name: 'Brad Traversy'}, 
    { name: 'Steve Smith'}, 
    { name: 'Janet Williams'}, 
    { name: 'Ashik Billa'} 


]; 

export default class Component4 extends Component { 
    constructor() { 
     super(); 
     const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); 
     this.state = { 
      userDataSource: ds.cloneWithRows([users]), 
     }; 
    } 

    renderRow(user, sectionId, rowId, highlightRow) { 
     console.log(user.name); 
     return (
      <View> 
       <Text>{user.name}</Text> 
      </View> 

     ) 
    } 

    render() { 
     return (
      <ListView 
       dataSource={this.state.userDataSource} 
       renderRow={this.renderRow.bind(this)} 
      /> 
     ); 
    } 
} 


AppRegistry.registerComponent('Component4',() => Component4); 

此外console.log(user.name);顯示不定,並有反正獲得? 。

回答

1
export default class Component4 extends Component { 
constructor() { 
    super(); 
    const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 }); 
    this.state = { 
     userDataSource: ds.cloneWithRows([users]), 
    }; 
} 

render() { 
    return (
     <ListView 
      dataSource={this.state.userDataSource} 
      renderRow={(user) => <Text>{user}</Text>} 
     /> 
    ); 
} 

}

此代碼應片斷應該給你如何使用ListView組件的想法。

+0

謝謝你的回答,但正確的我改變我的代碼普碳鋼它不工作... 還有我不明白怎麼能我得到「通過在這裏的正確數據」」? 我怎樣才能讓我的** **的用戶陣列 –

+0

我可以想象你有狀態或道具的用戶陣列。簡單地採取用戶進行陣列和傳遞給renerRow函數,就像任何其他聲明期望參數的函數一樣充滿了那些通過的論點。相當肯定的是,一旦你這樣做了,你的問題就會得到解決。 –

+0

很好,我不能緩存點,如果你chnage我的代碼它將麪糊爲我回答。 我要請你你能chnage的代碼,使其成爲輸出:) –

0

首先,你應該申報的數據源在構造函數中,像這樣

this.ds = new ListView.DataSource({ rowHasChanged: (r1,r2) => r1 !== r2 })

此行是錯誤的ds.cloneWithRows([users])因爲用戶已經是一個數組。

應該this.ds.cloneWithRows(users)

這是你的固定碼

constructor() { 
    super() 
    this.ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}) 
    this.state = { 
     userDataSource: this.ds.cloneWithRows(users) 
    } 
    } 

    renderRow = (user, sectionId, rowId, highlightRow) => { 
    console.log(user.name) 
    return (
     <View> 
     <Text>{ user.name }</Text> 
     </View> 

    ) 
    } 

    render() { 
    return (
     <ListView 
     dataSource={ this.state.userDataSource } 
     renderRow={ this.renderRow } 
     /> 
    ) 
    } 
相關問題