1
resposta

O bind é mesmo necessário?

O bind é mesmo necessário no this.setNome = this.setNome.bind(this)?

Vi em outro local o seguinte código e funciona. Qual a diferença que isso faz?

Declara

state = {
        usuario,
        senha
    };

No submit coloca a função this.camposEstaoValidos() e na função:

camposEstaoValidos = () => {
        const { usuario, senha } = this.state;
        //Faz algo com o usuario e senha
}
1 resposta

No caso deste código:

const { usuario, senha } = this.state;

O que você está fazendo é uma desestruturação. Ou seja, você está criando uma variável senha e usuario com o conteúdo da variável senha e usuario do seu state.

Isso facilita o seu trabalho, já que você não vai mais precisar fazer this.state.senha para acessar a senha.

Quanto ao bind, como você não postou o código, a utilidade seria para passar a função para outro componente.

Por exemplo, vamos supor que você tenha uma função setNome que altere o state nome de sua página. Se você quiser passar a função para outro componente, vai ter que fazer o bind, de outra forma, não vai funcionar.

Aqui tem um exemplo onde os componente "Produtos" e "Categorias" recebem via props uma função chamada "alterarTab"

  export default class catalogo extends Component {
   state = {
    activeTab: 0,
    initialPage: 0
  };

  alterarTab = valor => {
    this.setState({ activeTab: valor });
  };
  render() {
    return (
      <Container>

        <Tabs initialPage={this.state.initialPage} page={this.state.activeTab}>
          <Tab heading="Produtos">
            <Produtos navigation={this.props.navigation} alterarTab={this.alterarTab.bind(this)}/>
          </Tab>
          <Tab heading="Categorias">
            <Categorias navigation={this.props.navigation} alterarTab={this.alterarTab.bind(this)}/>
          </Tab>

        </Tabs>

      </Container>
    );
  }
}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software