Как использовать JSON выборку для аутентификации при входе в реагировать родной? - PullRequest
0 голосов
/ 12 февраля 2020

Мне нужно выполнить аутентификацию при входе в систему с помощью реакции нативной выборки пользователя в файле JSON, как показано ниже:

  async componentDidMount() {
    return fetch(
'https://gist.githubusercontent.com/MatheusCbrl/9504064f6605726886df412681fca376/raw/77666e642ee610cfab0aa690d543b3be2c07ba4e/teste.json'
    )
      .then(response => response.json())
      .then(responseJson => {
        // just setState here e.g.
        this.setState({
          users: responseJson,
        });
      })
      .catch(error => {
        console.error(error);
      });
  }

Я пытаюсь сделать что-то вроде этого:

  _signin = async () => {
    const{username, password} = this.state
    if(username == ""){
      Alert.alert(" ",'Por favor digite a Matrícula')

    } else if(password == ""){
      Alert.alert(" ",'Por favor digite o seu RG')

    } else if (
      username.response === this.state.username &&
      password.response === this.state.password
    ) {
      await AsyncStorage.setItem('Logado', '1');
      this.props.navigation.navigate('Diurno');
      console.log('entrou')
    } else {
     this.setState({ isVisible: true })
      console.log('login inválido');
    }

кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 12 февраля 2020

Во-первых, это нехорошая практика: переводите ваши функции жизненного цикла в asyn c, вам нужно создать еще одну асинхронную c функцию и вызвать ее на didMount.

state = {
  users: []
}

componentDidMount() {
  fetchData()
}

componentDidUpdate(prevState) {
   if (prevState.users.length > 0 && (prevState.users !== this.state.users)) {
      singIn()
   }
}

function fetchData() {
    const url = 'https://gist.githubusercontent.com/MatheusCbrl/9504064f6605726886df412681fca376/raw/77666e642ee610cfab0aa690d543b3be2c07ba4e/teste.json'
    fetch(url)
        .then(response => response.json())
        .then(data => {
            this.setState({ users: data})

         })
    .catch(error => console.log('oops run to the hills!!!!', error))
}

function signIn() {
    const [findUser] = this.state.users.filter(user => user.cpf === 'whatever')
    if(findUser) {
        //login
    } else {
        //invalid login
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...