Реагирует на встроенную функцию преобразования класса в переменную класса undefined - PullRequest
0 голосов
/ 24 марта 2020

Мы пытаемся преобразовать встроенную функцию реагирования в класс, чтобы мы могли включить управление состоянием, которое будет работать с базой данных Firebase в реальном времени. Мы только что поняли, что вы не можете использовать Крюк в классе, поэтому будем благодарны за некоторые рекомендации относительно альтернативы, которая лучше всего соответствует ситуации. Приложение представляет собой простую камеру, которая позволяет записывать и публиковать видео.

Вот фрагмент исходного кода (работ) в функции. константный тип объявлен и использует ловушку useEffect. Нам нужна альтернатива, которая работает в классе.

export function App({ navigation }) {
  const [hasPermission, setHasPermission] = useState(null);
  const [cameraRef, setCameraRef] = useState(null)
  const [recording, setRecording] = useState(false)

  //type uses hooks declared HERE
  const [type, setType] = useState(Camera.Constants.Type.back); useEffect(() => {
    (async () => {
      const { status } = await Camera.requestPermissionsAsync();
      setHasPermission(status === 'granted');
    })();

Вот над чем мы работаем:

export class App extends Component {

  state = {
    hasPermission: null,
    cameraRef: null,
    recording: false,
    type: Camera.Constants.Type.back //can not find variable type HERE
  };

  componentDidMount() {

    async () => {
      status = await Camera.requestPermissionsAsync();
      setHasPermission(status === 'granted');

    }, []; if (hasPermission === null) {
      return <View />;
    }
    if (hasPermission === false) {
      return <Text>No access to camera</Text>;
    }

  }

Любая помощь, которую вы оцените, спасибо.

1 Ответ

0 голосов
/ 24 марта 2020

попробуйте

export class App extends Component {

 state = {
      hasPermission: null,
      cameraRef: null,
      recording: false,
      type: Camera.Constants.Type.back //can not find variable type HERE
 };

 async componentDidMount() {

      status = await Camera.requestPermissionsAsync();
      this.setState({
           hasPermission: 'granted'
      });

      if (this.state.hasPermission === null) {
           return <View />;
      }
      if (this.state.hasPermission === false) {
           return <Text>No access to camera</Text>;
      }

 }

}

...