在React-Native中启动功能之前的TouchableOpacity / TouchableHighlight延迟

时间:2019-09-30 10:38:21

标签: javascript reactjs react-native redux

我对React-Native中的这两个组件有问题,当单击它时,该功能似乎以1-2秒的延迟开始

const ExampleComponent = (props) => {

  const _asyncFunction = async() => {
   props.startLoading() // dispatch an action
   const response = await promise();
   props.stopLoading();
   props.goToAnotherRoute(response);
  }

  return(
   <TouchableHighlight onPress={() => {_asyncFunction()}}>
      <Text>click on me</Text>
   </TouchableHighlight>
  )
}

1 个答案:

答案 0 :(得分:-1)

根据https://facebook.github.io/react-native/docs/performance#my-touchablex-view-isnt-very-responsive中提到的React Native文档。

  

有时候,如果我们在调整的同一帧中执行一项操作   响应触摸的组件的不透明度或高光,   直到onPress函数具有   回到。如果onPress执行setState会导致大量工作,并且   丢了几帧,可能会发生这种情况。解决方案是包装   您在requestAnimationFrame中的onPress处理程序内部的任何操作:

handleOnPress() {
  requestAnimationFrame(() => {
    this.doExpensiveAction();
  });
}

我希望这会有所帮助!