2

我按照此处给出的示例编写了一个自定义右导航按钮。但是,在使用自定义组件时,似乎onNavigatorEvent()不再调用该方法。我什至尝试将 onPress 事件作为道具传递给我的自定义组件,但这是通过undefined. 有什么我想念的吗?

这就是我将 onPress 道具传递给创建按钮的函数的方式:

Navigation.registerComponent('DoneButton', () => DoneButton);

const DoneButton = ({text, backgroundColor, textColor, onPressAction}) => {
    var containerStyle = [{backgroundColor: backgroundColor, width: 70, height:30, justifyContent:'center', borderRadius:4, shadowColor:'black', shadowOpacity:0.2, shadowRadius:1, shadowOffset:{width:0, height:2}}];            
    return(
        <TouchableOpacity style={containerStyle} onPress={onPressAction}>
            <Text style={[{color:textColor, textAlign: 'center', fontSize:16}]}>
                {text}
            </Text>
        </TouchableOpacity>
    );
}

_renderDoneButton(){
    this.props.navigator.setButtons({
        rightButtons: [
            {
              id:           'Done'
              component:    'DoneButton',
              passProps:    this._DoneButtonProps(),
            }],
    })
}

_DoneButtonProps(){
    return {
        text:               'Done',
        backgroundColor:    'green',
        textColor:          'white',
        onPressAction:      this._doneAction.bind(this)
    }
}

_doneAction(){
    alert('Done');
}
4

1 回答 1

2

从 1.1.282 版开始,您可以将不可序列化的道具传递给自定义按钮,因此您传递的 onPress 方法应该可以工作。

于 2017-11-20T13:12:42.880 回答