3

我在响应本机的 onPress 事件上工作。第一次,我写了这段代码:

<TouchableOpacity
    onPress={(this.props.minimum==null||this.props.value-1>=this.props.minimum)
        ? this.props.onDecrement
        :console.log(this.props.texte+" : minimum atteint")}
    style={[buttonSpinner,buttonSpinnerLeft]}>

这样,我的按钮就可以工作了,但是 onPress 会在每次 render() 调用时自动调用。我搜索并在这里找到了解决方案:React Native onPress 被自动调用

但是现在,如果我没有任何自动呼叫......当我按下我的 Touchable 组件时我没有呼叫。

我尝试了一些版本:

const p=this.props;
//some other code
<TouchableOpacity
    onPress={()=>(p.minimum==null||p.value-1>=p.minimum)
        ? p.onDecrement
        :console.log(p.texte+" : minimum atteint")}
    style={[buttonSpinner,buttonSpinnerLeft]}>

--

const p=this.props;
// some other code
<TouchableOpacity
    onPress={(p)=>(p.minimum==null||p.value-1>=p.minimum)
        ? p.onDecrement
        :console.log(p.texte+" : minimum atteint")}
    style={[buttonSpinner,buttonSpinnerLeft]}>

--

<TouchableOpacity
    onPress={()=>(this.props.minimum==null||this.props.value-1>=this.props.minimum)
        ? this.props.onDecrement
        :console.log(this.props.texte+" : minimum atteint")}
    style={[buttonSpinner,buttonSpinnerLeft]}>

没有成功...

精确,我在一个单独的组件上工作。该组件在主渲染中被调用,如下所示:

<NumberSpinner
    onDecrement = {()=>this.onDecrement(elt.idCat,idElt)}
    onIncrement = {()=>this.onIncrement(elt.idCat,idElt)}
    minimum = {0}
    maximum = {null}
    texte = {elt.slug}
    value={elt.qteTxt}
/>
4

2 回答 2

3

尝试在函数中移动你的逻辑,所以onPress只使用函数调用

<TouchableOpacity
         onPress={this.onPress}
       >
   <Text> Touch Here </Text>
</TouchableOpacity>

和你的功能:

onPress = () => {
   //your logic here
  }
于 2018-04-10T10:57:54.363 回答
2

您需要从导入TouchableOpacityreact-native不是从导入react-native-gesture-handler。里面的版本react-native-gesture-handler100%坏了。作品中的版本react-native

接受的答案不能解决这个问题。

于 2019-11-03T23:59:59.003 回答