2016-04-21 111 views
0

我遵循同名的'BookBrowser'示例 - 這是一個常用的應用程序,它教導React Native到n00bs,但不幸的是,經常使用NavigatorIOS而不是Navigator來向學生解釋導航。如何將renderRow對象作爲導航器的道具傳遞?

我決定給它一個,並設法通過'路由'導航對象傳遞靜態道具。然而,我卡在實際上傳遞renderRow對象(從ListView)。例如:

renderResults() { 
    return (
     <ListView 
     dataSource={this.state.dataSource} 
     renderRow={this.renderBooks} 
     style={styles.listView} 
     /> 
    ); 
    } 

    renderBooks(book) { 
    return (
     <TouchableHighlight 
     style={styles.button} 
     underlayColor={'#F25F5D'} 
     onPress={this.onBookPress} 
     > 
     <View style={styles.row}> 
      <Text style={styles.title}> 
      {book.name} 
      </Text> 
     </View> 
     </TouchableHighlight> 
    ); 
    } 

我試圖用這個函數來無效傳遞書名prop。

onBookPress() { 
    this.props.navigator.push({name: 'bookdetails', dummy: this.props.name}); 
    } 

當我從孩子那裏消費時,我得到了未定義。我嘗試了其他組合,包括this.props.book.name等。

你能指點我一個工作代碼或引導我誤解我的位置嗎?

PS:正如我所說,我設法成功地通過靜態道具的子組件,所以問題是如何通過渲染行..

+0

嗯我認爲你在renderRow中缺少書本對象。你正在調用行渲染器,但是你沒有給書來渲染書。我會嘗試像這樣:'renderRow = {(book)=> this.renderBooks(book)}'據我所知,其他一切都看起來不錯 – Vikky

+0

感謝@Vikky,但這並沒有解決問題。詳情請查閱我自己的答案。 –

回答

1

所以我一段時間後想通了這一點。爲了這篇文章的未來讀者,我需要做的就是將book對象作爲參數傳遞給onPress回調函數。這個對象可以用作導航器的道具 - 我選擇了'route',因爲它已經可用於導航器。

相關問題