0

我制作了一个名为的组件IconButton,它需要一些道具并传递任何额外的道具。

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.logonPress没有出现;它记录了一个空对象。此外,它没有传递给我View,因为它onPress在按下时没有调用。但是当我通过不同类型的不同道具(例如数字和字符串)时,它显示得很好。

为什么它没有被传递给我View,为什么没有记录道具?如果这可能会影响任何事情,我也在使用 Expo。我在 GitHub 上设置了一个问题。

4

1 回答 1

2

日志记录问题是 Expo 的一个错误,它使用JSON.stringify和其他方法提供输出,但没有正确输出对象。该错误还包含诸如onPress此处的功能,它们是对象的一部分,并导致console.log根本不记录它,请参见此处。该问题位于 GitHub 上,并将在 2017 年 6 月 19 日的下一次 SDK 更新中修复。

现在谈一个不同的问题,View不需要onPress道具,它不应该是可触摸的。要获得可触摸的视图,请尝试以下包装器:

于 2017-06-04T20:58:43.993 回答