博览会ScreenOrientation.lockAsync()问题

时间:2020-10-22 23:16:17

标签: reactjs react-native expo react-navigation

我正在使用Expo构建一个React Native应用程序。我试图在横向模式下显示屏幕。没有调用lockAsync,一切正常。将通话添加到lockAsync时,屏幕会正确旋转,但是随后我收到一个React警告,此后不久出现Warning: Maximum update depth exceeded. This can happen when a component calls setState inside useEffect

const Temp = ({ navigation }) => {
  useEffect(() => {
    changeScreenOrientation();
  }, []);

  const changeScreenOrientation = async () => {
    await lockAsync(OrientationLock.LANDSCAPE_LEFT);
  };

  return (
    <View>
      <Text>test</Text>
      <Button onPress={() => navigation.pop()} title="back" />
    </View>
  );
};

useEffect调用仅发生一次,因此在调用lockAsync时会引起无限循环或错误

ExceptionsManager.js:126警告:从useState()和useReducer()进行状态更新挂钩不支持第二个回调参数。要在渲染后执行副作用,请使用useEffect()在组件主体中声明它。

169ExceptionsManager.js:126警告:已超过最大更新深度。当组件在useEffect内调用setState时会发生这种情况

0 个答案:

没有答案