this.setState does not work

0

Does anyone know why the function this.setState (token: token_here) 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>
        );
      }
    }
    
asked by anonymous 26.02.2018 / 05:04

1 answer

1

Try changing this line:

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

by this:

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

I think it's because you're passing the token as a string, using single quotes.

    
10.08.2018 / 15:21