Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

React: obter valor de um input customizado no component pai via ref

Tenho o seguinte componente que representa um input:

<CustomInput type="email"
 id="email"
 name="email"
 ref={(input) => this.email = input}
 placeholder="E-mail"/>

O código desse componente, resumidamente, é:

import React, {Component} from 'react';

class CustomInput extends Component {
    render() {
        return (
            <div>
                <input {...this.props}/>
            </div>
        );
    }
}

export default CustomInput;

No meu component pai, ou seja, onde o CustomInput está sendo chamado, eu não consigo pegar o seu valor, via:

this.email.value // undefined

Entretanto, se eu troco na chamada dentro do componente pai o CustomInput por input simples, o retorno funciona conforme esperado. Dei uma pesquisada mas os resultados encontrados não ficaram claros e, muito menos a forma correta de se implementar o fix.

Poderiam me esclarecer? Obrigado.

1 resposta
solução!

Realizei um fix, mas não sei se é a melhor opção:

No meu CustomInput criei uma função que retorna o valor do input, e adicionei um ref:

// ...
getValue() {
    return this.item.value;
}

// ...
<input {...this.props} ref={(input) => this.item = input}/>

E no meu componente pai, ao invés de chamar this.email.value nós chamamos this.email.getValue().

Você possuem alguma observação? Outro jeito e talvez mais correto...

Obrigado