Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

93
Visualizações
Cómo tomar la entrada de un componente de reacción y pasar la longitud de la entrada a otro componente de reacción

Tengo un área de texto donde quiero tener un evento onChange. Cuando se ingresa texto, quiero calcular la longitud de la cadena ingresada y luego pasarla a otro componente de reacción para mostrar el conteo de caracteres. Sin embargo, tengo problemas para pasar los datos a mi componente de reacción.

Tengo 3 componentes de reacción en total:

  • SegmentCalculator: esta es mi aplicación completa
  • InputBox: aquí es donde un usuario ingresaría su cadena
  • CharacterBox: aquí es donde me gustaría mostrar mi número de caracteres

Esto es lo que tengo hasta ahora:

 class InputBox extends React.Component { constructor(props) { super(props); this.state = { value: null, } } render() { return ( <label> Input: <textarea type="text" value={this.state.value} onChange={() => this.props.onChange(this.state.value)} /> </label> ); } } class CharacterBox extends React.Component { render() { return ( <div>Character Count:{this.props.charCount}</div> ) } } class SegmentCalculator extends React.Component { constructor(props) { super(props); this.state = { inputChars: null, }; } handleChange(value) { this.setState({ inputChars: value, inputCharsLength: value.length, }); } render() { let charaterCount = this.state.inputCharsLength; return ( <div className="segment-calculator"> <div className="input-box"> <InputBox onChange={() => this.handleChange()} /> </div> <div className="characters"> <CharacterBox charCount={charaterCount}/> </div> </div> ); } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Tiene una entrada semicontrolada, lo que significa que tiene un estado local pero no lo actualiza.

Pase el estado de entrada del padre.

InputBox: pasa la propiedad de value al elemento textarea . Pase el valor de destino del evento onChange a la propiedad de devolución de llamada onChange .

 class InputBox extends React.Component { render() { return ( <label> Input: <textarea type="text" value={this.props.value} onChange={(e) => this.props.onChange(e.target.value)} /> </label> ); } }

SegmentCalculator: pase this.state.inputChars a la propiedad de value InputBox . La longitud de entrada se deriva del estado, por lo que no hay razón para almacenarla en el estado.

 class SegmentCalculator extends React.Component { constructor(props) { super(props); this.state = { inputChars:'', }; } handleChange = (value) => { this.setState({ inputChars: value, }); } render() { const { inputChars } = this.state; return ( <div className="segment-calculator"> <div className="input-box"> <InputBox onChange={this.handleChange} value={inputChars} /> </div> <div className="characters"> <CharacterBox charCount={inputChars.length}/> </div> </div> ); } }

 class InputBox extends React.Component { render() { return ( <label> Input: <textarea type="text" value={this.props.value} onChange={(e) => this.props.onChange(e.target.value)} /> </label> ); } } class CharacterBox extends React.Component { render() { return ( <div>Character Count:{this.props.charCount}</div> ) } } class SegmentCalculator extends React.Component { constructor(props) { super(props); this.state = { inputChars: '', }; } handleChange = (value) => { this.setState({ inputChars: value, }); } render() { const { inputChars } = this.state; return ( <div className="segment-calculator"> <div className="input-box"> <InputBox onChange={this.handleChange} value={inputChars} /> </div> <div className="characters"> <CharacterBox charCount={inputChars.length}/> </div> </div> ); } } const rootElement = document.getElementById("root"); ReactDOM.render( <SegmentCalculator />, rootElement );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script> <div id="root" />

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda