2017-05-02 113 views
0

在我的理解反應原有成分有兩種方法來呈現反應原生組件作爲道具不能訪問道具傳遞?

·通過內部parents標籤

·通過爲父母(?)道具

例如,我有這個FlatList組件

<FlatList 
     ListHeaderComponent={MiddleRightLabelComponent} 
     ItemSeparatorComponent={SeparatorComponent} 
     data={this.state.dataSource} 
     keyExtractor={item => item.title} 
     // renderItem={({ item }) => <Text>{item.key}</Text>} 
     renderItem={this._renderItem} 
     style={styles.flatlist} 
     {...this.props} 
/> 
_renderItem({ item, index }) { 
    console.warn(this.props); 
    return (
     <ListItem 
     id={item.id} 
     // onPressItem={this.props.openEditTaskModal.bind(this, true)} 
     // selected={!!this.state.selected.get(item.id)} 
     title={item.title} 
     /> 
    ); 
} 

在這個_renderItem console.warn,我得到(未定義),當我試圖得到(this.props)。

我需要將道具傳遞到ListItem組件。

有什麼想法?

回答

1

_renderItem正在創建自己的this的實例。在無狀態的組件(或不綁定到組件類的功能)要參照功能PARAMS directy

const _renderItem = (props) => { 
    console.warn(props); 
    return (
     <ListItem 
     id={props.item.id} 
     title={props.item.title} 
     /> 
    ); 
} 

OR(與解構ES6):

const _renderItem = ({ item }) => { 
    console.warn(item); 
    return (
     <ListItem 
     id={item.id} 
     title={item.title} 
     /> 
    ); 
} 
+0

謝謝。那麼如何通過道具將功能傳遞給無狀態組件呢? – hanachan1026

+0

相同的方式:D ...'props.invokeFunc()' – Maxwelll

+0

啊謝謝...我終於明白如何正確傳遞道具 – hanachan1026