2017-06-04 51 views
0

我製作了一個名爲IconButton的組件,它需要一些道具並傳遞任何額外的道具。爲什麼不是我的道具日誌記錄或在React Native中傳遞?

import Icon from 'react-native-vector-icons/FontAwesome'; 

const IconButton = ({ icon, title, ...props }) => { 
    console.log(props); // Actual: {}, expected: { onPress: [function] } 
    return (
     <View style={ iconBox } { ...props }> 
      <Icon name={ icon } size={ 48 } color="black" /> 
      <Text>{ title }</Text> 
     </View> 
}; 

然後我渲染它:

const render =() => (
    <IconButton icon='plus' title='add' onPress={() => console.log('hi') } /> 
); 

然而,當我試圖用console.log記錄它,onPress沒有露面;它記錄了一個空的對象。此外,它沒有傳遞給我的View,因爲它沒有按下時調用onPress。但是當我傳遞不同類型的道具時,例如數字和字符串,它顯示得很好。

爲什麼它不被傳遞給我的View,爲什麼不記錄道具?如果這可能會影響任何事情,我也使用世博會。我已經設置了一個問題on GitHub

+0

這是非常令人沮喪的,因爲沒有人似乎在Google上遇到過這個問題......爲什麼只有我自己似乎無法通過道具傳遞函數...... –

+0

不確定實際問題,但我通常會在父'onPress = {this.props.onPress}'上引用道具。這樣做的好處是,你知道你期望的道具,而不是一切通過。 –

+0

同意。我添加了一段允許回調的示例代碼。 我會發布我的完整代碼,但我有一種感覺,這是因爲我的一個進口產品或某些東西正在破壞React本機的工作方式......像矢量圖標可能...... –

回答

2

日誌記錄問題是世博會的一個錯誤,它使用JSON.stringify和其他方法提供輸出,但不能正確輸出對象。此錯誤還包含onPress這些功能,這些功能是對象的一部分,導致console.log根本沒有記錄它,如下所示。問題是on GitHub並設置爲固定在未來SDK更新於6月19日,2017年

現在到一個不同的問題,View不採取onPress道具,它不應該是可觸摸。爲了有一個可觸摸視圖,請嘗試以下包裝:

相關問題