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

145
Visualizações
El componente conectado de React-Redux no puede actualizar la vista/activar la reproducción cuando se llama a setState

Estoy usando un componente conectado redux en reaccionar. Simplemente tengo problemas para representar un botón después de llamar al controlador handleSubmit onClick. Solo aparece después de actualizar la página, lo que puede indicar un problema asíncrono. Entonces, en este componente, tengo una propiedad de estado redux llamada estado y la he asignado a los accesorios de mi estado local. Escuché que cuando el estado o los accesorios cambian, es cuando el componente se vuelve a renderizar. Entonces, lo que pensé hacer es en mi método de representación, si this.state.showButton es verdadero, entonces este botón se mostraría. Sin embargo no lo hace. También registré en la consola this.state.showButton y de hecho es cierto.

ingrese la descripción de la imagen aquí

Pero el botón no está allí. Hice lo siguiente:

 class VerificationForm extends React.Component { constructor(props) { super(props); this.state = { formError: false, showModal: false, showButton: false }; } handleSubmit = (e) => { e.preventDefault(); this.setState({ formError: showFormError }); verifyLevelOne() .then((data) => { const { status } = this.props; const verified = status === 'VERIFIED'; this.setState({ showButton: verified }, () => { actions.showSubmissionNotification(data); }); console.log('Hereeeeee', this.state.showButton); }); } render() { const { classes, actions, status } = this.props; const { formError, showModal } = this.state; return ( <div> <form onSubmit={this.handleSubmit} autoComplete="off"> <Grid className={classes.container} container direction="column" alignItems="center" xs={12}> <Grid container direction="column" xs={11}> <span style={{ display: 'flex', justifyContent: 'space-around' }}> <Button fullWidth onClick={this.handleSubmit} type="submit" variant="contained" color="primary">Submit Information</Button> { this.state.showButton && <Button onClick={this.handleShowModal} variant="contained" color="primary">Proceed</Button> } </span> </Grid> </Grid> </form> </div> ); } } function mapStateToProps(state) { return { status: state.global.verification.status, }; } function mapDispatchToProps(dispatch) { return { actions: { ...bindActionCreators({ showNotification, showSubmissionNotification, }, dispatch) } }; } const base = withRouter((withStyles(styles)(VerificationForm))); export default connect(mapStateToProps, mapDispatchToProps)(base);
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

setState se ejecuta de forma asíncrona, por lo que si console.log justo después de setstate, no obtendrá el valor correcto

Sugeriría a console.log a cambio de renderizar justo cuando está usando el estado para el saco de depuración. consulte a continuación:

 <span style={{ display: 'flex', justifyContent: 'space-around' }}> <Button fullWidth onClick={this.handleSubmit} type="submit" variant="contained" color="primary">Submit Information</Button> { console.log(this.state.showButton)} { this.state.showButton && <Button onClick={this.handleShowModal} variant="contained" color="primary">Proceed</Button> } </span>
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