代码之家  ›  专栏  ›  技术社区  ›  Bomber

按条件渲染可触摸突出显示

  •  1
  • Bomber  · 技术社区  · 6 年前

    我试图有条件地呈现 onPress ,如果描述属性为 undefined ,我想要任何 印刷机 功能。不管怎样,我的onpress都会触发,如果描述未定义,我如何删除它

    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 == "" ? null : this._onPressButton;
                }}
    
            >
    
    3 回复  |  直到 6 年前
        1
  •  0
  •   Nitish    6 年前

    你可以像下面那样做,也可以禁用

    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 
    
            >
    
        2
  •  0
  •   Andrew    6 年前

    你可以使用 disabled 支柱。如果为真,则将禁用TouchableHighlight

    像这样的东西

     <TouchableHighlight
      onPress={() => {
        this._onPressButton;
      }}
      disabled={description === ''}
     >
    

    TouchableHighlight与TouchableWithOutFeedback具有相同的属性

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

        3
  •  0
  •   Treycos    6 年前

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

    console.log(undefined == "")

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

    下面应该通过放置一个不做任何事情的函数来完成这个技巧:

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

    如果出现以下情况,也可以使用内联:

    onPress={description && this._onPressButton }