this.setState does not work

Asked

Viewed 699 times

0

Does anyone know why the this.setState(token: token_here) function is not working or returning error ?

export default class Init extends Component<Props> {
        state = {
            // Evita que o código seja executado duas vezes.
            // Gambiarra de um bug desconhecido.
            control_request: 0,
            // Parâmetros passados pelo auth.js.
            params: this.props.navigation.state.params,
            // Token.
            token: '',
        }
          // Função executada após a montagem do componente.
          componentDidMount() {
            /* Verificando se os parametros foram passados.
             * Verificando se a função já foi executada antes.
             */ 
            if(this.state.params && this.state.control_request == 0){
                // Setando o valor 1, informando a execução da função.
                this.setState({control_request: 1});
                // Atribuição por desestruturação.
                let { params:{ code },
                      params:{app:{client_id}},
                      params:{app:{client_secret}},
                      params:{app:{grant_type}},
                      params:{app:{redirect_uri}}
                      } = this.state.params;
                // Requisitando o token a API.
                axios.post('https://openredu.ufpe.br/oauth/token?', {
                    client_id:      client_id,
                    client_secret:  client_secret,
                    grant_type:     grant_type,
                    redirect_uri:   redirect_uri,
                    code:           code,
                }).then(function(response){
                  // Usar o storage para armazenar o token.
                  token = (response) => {
                    this.setState({'token': response.data.access_token});
                  }
                })
                .catch(function(error){
                  // Tratar o erro.
                  console.log(error);
                });
            }
        }
      render() {
        console.log(this.state.token);
        return (
          <View>
              <Text style={styles.textLogin}> Login </Text>
              <Button
              title="Login"
              onPress={() => this.props.navigation.navigate('Auth')}
                />
              { !!this.state.token && <Text>Token de acesso : {this.state.token}</Text> }
          </View>
        );
      }
    }

1 answer

1

Try to change that line:

this.setState({'token': response.data.access_token});

for that:

this.setState({token: response.data.access_token});

I believe it is because you are passing the token as string, using the simple quotes.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.