Tengo menús seleccionados y estoy tratando de cambiar un valor cuando selecciono una opción usando el método optionSelect . Cuando selecciono una opción por primera vez, el valor no se actualiza en console.log. Solo cambia a partir de la segunda vez. No estoy seguro de lo que estoy haciendo mal. ¿Necesito agregar algo en el componenteDidMount ?
constructor(props) { super(props); this.state = { value : '', }; } optionSelect(option){ this.setState({value : option.target.value}); console.log(this.state.value) } render() { return ( <React.Fragment> <Select name="item" required={this.props.required ? 'required' : ''} defaultValue={this.state.value} onChange={e => this.optionSelect(e)} > <option disabled value="">{this.props.placeholder}</option> { this.props.optionData && this.props.optionData.length ? this.props.optionData.map(option => ( <option key={option.id} value={option.id}> {option.name} </option> )) : null } </Select> </React.Fragment> ); }
setState() en React no es síncrono. Mientras intenta consolar, registre el valor. El valor aún no se ha actualizado. Si desea console.log un valor inmediatamente después de que cambie, agregue un
componentDidUpdate(){ console.log('Value', this.state.value) }