ошибка связывания: синтаксическая ошибка Неожиданный токен при использовании React-native-android-wifi - PullRequest
0 голосов
/ 23 декабря 2018

Я новичок в реакции-родной и хочу управлять Wi-Fi в моем устройстве Android.В основном, я хочу попросить разрешения включить Wi-Fi, показать список Wi-Fi и отключить Wi-Fi, поэтому я следовал этому уроку:

код для запроса разрешения ниже

import React, { Component } from 'react';
import { Platform, StyleSheet, Text, View } from 'react-native';

var wifi = require('react-native-android-wifi');

export default class App extends Component {

  wifi.isEnabled((isEnabled) => {
    if (isEnabled) {
      console.log("wifi service enabled");
    } else {
      console.log("wifi service is disabled");
    }
  });

  render() {
    return (
      <View style={styles.container}>
        <Text>Welcome to React Native!</Text>
        <Text>To get started, edit App.js</Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
});

Я получил эту ошибку:

Может кто-нибудь помочь мне, почему я получаю ошибку и что мне делать?

1 Ответ

0 голосов
/ 23 декабря 2018

Это связано с тем, что вам нужно вызвать ваш wifi.isEnabled в вашем componentDidMount, а не в теле вашего класса.

Обновите свой компонент до:

export default class App extends Component{

  componentDidMount() {
    wifi.isEnabled((isEnabled)=>{
      if (isEnabled){
       console.log("wifi service enabled");
      }else{
        console.log("wifi service is disabled");
      }
    });
  }

  render() {
    return (
      <View style={styles.container}>
        <Text>Welcome to React Native!</Text>
        <Text>To get started, edit App.js</Text>
      </View>
    );
  }
}

Глядя на репозиторий для response-native-android-wifi , есть несколько шагов, которые вам еще нужно сделать,

Для начала вам нужно запросить разрешение на доступ к локации.Итак, давайте сделаем это в componentDidMount, поскольку это асинхронный запрос, нам нужно убедиться, что ваш componentDidMount также является асинхронным.

Во-вторых, мы хотим выполнить проверку.Мы можем сделать это, привязав его к нажатию кнопки.

Нам также потребуется импортировать несколько вещей из react-native, поскольку мы используем компонент Button и хотим запрашивать разрешения для Android.

import { Button, PermissionsAndroid } from 'react-native';

export default class App extends Component {

  async componentDidMount () {
    this.askForUserPermissions();
  }

  async askForUserPermissions () {
    try {
      const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
        {
          'title': 'Wifi networks',
          'message': 'We need your permission in order to find wifi networks'
        }
      );
      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        console.log('Thank you for your permission! :)');
      } else {
        console.log('You will not able to retrieve wifi available networks list');
      }
    } catch (err) {
      console.warn(err);
    }
  }

  checkWiFi () {
    wifi.isEnabled((isEnabled) => {
      if (isEnabled) {
        console.log('wifi service enabled');
      } else{
        console.log('wifi service is disabled');
      }
    });
  }

  render () {
    return (
      <View style={styles.container}>
        <Button title={'check wifi'} onPress={this.checkWiFi.bind(this)} />
        <Text>Welcome to React Native!</Text>
        <Text>To get started, edit App.js</Text>
      </View>
    );
  }
}

Для получения более подробной информации о том, как это настроить, посмотрите на examples в репозитории, они показывают, как делать большинство вещей, которые вы, вероятно, захотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...