有条件地渲染onPress for TouchableHighlight

时间:2019-01-23 12:44:12

标签: reactjs react-native

我正在尝试有条件地渲染context = getContext(); ,如果描述道具为onPress,我确实想要任何undefined功能。我的onPress会触发,无论如何,如果描述未定义,如何将其删除

onPress

3 个答案:

答案 0 :(得分:0)

您可以使用public enum FlowDirection { MatchParent = 0, LeftToRight = 1, RightToLeft = 2, } 道具。如果是这样,那么TouchableHighlight将被禁用

类似这样的东西

disabled

TouchableHighlight与TouchableWithoutFeedback具有相同的道具

https://facebook.github.io/react-native/docs/touchablewithoutfeedback#disabled

答案 1 :(得分:0)

您使用的条件将始终返回false,因为未定义空字符串:

console.log(undefined == "")

这种行为非常奇怪,因为您的函数甚至没有在箭头函数中返回。

以下应通过放置不执行任何操作的函数来解决问题:

onPress={description ? this._onPressButton : x => {} }

如果满足以下条件,这也可以用于内联:

onPress={description && this._onPressButton }

答案 2 :(得分:0)

您可以按照以下步骤操作或禁用

constructor(props) {
    super(props);

    this._onPressButton = this._onPressButton.bind(this);
}

_onPressButton(event) {
    Alert.alert(event.description);
}

render() {
    const { start, end, summary, description } = this.props;

    return (
        <TouchableHighlight
            onPress={() => {
                description == "" ? { } : this._onPressButton; // You can add { } instead of null
            }}
           disabled={description === ""} // Or you can just disabled conditionally 

        >