本土反应:onPress不起作用

时间:2018-04-10 10:49:23

标签: react-native touchableopacity onpress

我在反应原生的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]}>

这样,我的按钮可以工作,但每次render()调用都会自动调用onPress。 我搜索并在此找到了解决方案:React Native onPress being called automatically

但现在,如果我没有自动通话......当我按下我的可触摸组件时,我就不会打电话。

我尝试了一些版本:

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}
/>

2 个答案:

答案 0 :(得分:2)

尝试在函数中移动逻辑,因此只需使用函数调用{/ 1}}

onPress

和你的职能:

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

答案 1 :(得分:0)

您需要从TouchableOpacity导入react-native,而不是从react-native-gesture-handler导入。 react-native-gesture-handler中的版本已100%损坏。 react-native中的版本有效。

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