Ich verwende eine Komponente, um die Eingabe von Select SelectInput durchzuführen.Übergeben Sie Wert von Kind zu Eltern ohne OnChange reagieren
Hier ist mein Code:
'use strict'
import React from 'react'
class SelectInput extends React.Component{
constructor(props){
super(props);
this.state = {
select: "",
items: []
}
this.handleChange = this.handleChange.bind(this)
}
.
.
.
handleChange(event){
console.log(event.target.value)
this.setState({
select: event.target.value
});
if(this.props.onChange) {
this.props.onChange(event)
}
}
render(){
let disabled = this.state.items.length > 1 ? false : true,
selected = this.state.items ? this.state.items[0] : ""
return (
<select name={this.props.name} disabled={disabled} defaultValue={selected} value={this.state.select} onChange={this.handleChange}>
{this.state.items && this.state.items.map(item =>
<option value={item} >{item}</option>
)}
</select>
)
}
}
Mein Problem ist, wenn mein select nur eine Option hat, wie ich die Auswahl deaktivieren und den Wert als Standard ein. Aber ich bekomme nicht den Wert des Ereignisses bei onChange, um an die Elternkomponente zu übergeben.
Wie mache ich das?
Vielen Dank im Voraus
, wenn Sie Element deaktivieren? Warum gehst du außer einem Änderungsereignis aus? und warum deaktivierst du das Element? Warum interagiert der Benutzer mit einem deaktivierten Element? –
Ich deaktiviere das Element, weil die Komponente nur einen Client hat und diese Komponente diesen Client kennt. Ich habe auch eine Liste von Ländern, aber in diesem Moment habe ich nur ein Land. Warum also werde ich die Auswahl aktivieren? Und wenn ich zwei oder mehr Elemente habe und den Standardwert auf das erste Element der Liste setze, wie kann ich dieses Element an die Elternkomponente übergeben, wenn ich die Auswahl nicht geändert habe? –
in diesem Fall können Sie die 'handleChange()' beim Rendern selbst aufrufen, wenn keine der Elemente 1 ist. Weil der Benutzer keine Möglichkeit hat, mit dem Element zu interagieren. –