Dies ist meine Datei, die das Eingabefeld enthält.Eingabe-Taste verliert den Fokus auf die Eingabe und zeigt keinen Eingabewert in der Antwort
class IndividualPsid extends Component {
constructor(props) {
super(props);
this.state = {
editData: false,
newSkuid: this.props.SkuId
}
this.updateState = this.updateState.bind(this);
}
componentWillReceiveProps(nextProps) {
this.setState({ editData: nextProps.editingProp });
this.render();
}
updateState(e) {
const psid = e.target.value;
this.setState({ newSkuid: psid },() => {
this.props.onPsidChange(this.props.id, this.state.newSkuid);
});
}
render() {
let member = '';
if (this.props.editingProp) {
member = (
<div>
<input type="text" id="skuids" value={this.state.newSkuid} key={'dkj' + uuidv4()} onChange={this.updateState}
className="skuid col-xs-7" />
</div>
)
}
else {
member = (
<div key={this.props.SkuId} id="skuids" className="skuid col-xs-7" >{this.props.SkuId}</div>
)
}
return (
<div className="row" >
<div className="skuname col-xs-5">{this.props.SkuName}</div>
{member}
</div>);
}
Dies ist meine Datei, die Requisiten an die obige Datei übergibt.
class Category extends Component {
constructor(props) {
super(props);
this.state = {
editing: false,
text: 'EDIT',
changedSkus: []
}
this.edit = this.edit.bind(this);
this.onPsidChange = this.onPsidChange.bind(this);
}
onPsidChange(id, psid) {
const changedSkus = this.state.changedSkus.filter(
(sku) => (sku.brandProductExternalSkuId != psid)
);
changedSkus.push({
brandProductExternalSkuId: psid,
brandProductSkuId: id
});
this.setState({
changedSkus: changedSkus
})
}
edit(skuList) {
if (this.state.editing == false) {
this.setState({
text: 'SAVE',
editing: true
});
}
else {
this.setState({
text: 'EDIT',
editing: false
});
this.props.edit_menu_items_api(this.state.changedSkus);
}
this.render();
}
render() {
return (
<div className="show-grid row category-row">
<div className="col-md-8 text-left category">
<b>{this.props.categoryData.categoryName}</b>
</div>
{this.props.categoryData.productList.length > 0 &&
<div className="col-md-4 text-right">
<button className={this.state.text == "EDIT" ? "edit" : "save"} onClick={() =>
this.edit(this.props.categoryData.productList[0].brandProductSkuList)}>
{this.state.text}</button>
</div>
}
</div>
)
}
Also, was passiert ist, wenn ich auf EDIT-Taste klicken Sie das Feld editable.And wird, wenn ich etwas in das Eingabefeld eingeben, ist es nicht die eingegebene Nummer nicht zeigen, sondern zeigt an, wenn ich auf Speichern. Auch verliert es den Fokus nach jeder eingegebenen Zahl.Wie soll ich das lösen? Die Editierfunktion ist in der Kategorie-Komponente definiert, die die Redux-Funktion onclick speichert.
geben Sie eine Eigenschaft ref zu Textfeld als ref = "Element" und onchange von Werten rufen Sie eine Funktion, setzen Sie Ihre Werte als Zustand und dann leeren Sie den Zustand der aktuellen Komponente und tun, um zu konzentrieren ReactDOM.findDOMNode (this.refs. Element) .focus(); –
Nun, ich habe nicht gesehen, was falsch mit Ihrem Code ist, ist es Ihre Eingabe editierbar? –
ich schrieb this-componentDidMount() { \t \t this.refs.textField.focus(); \t} Dies verliert nicht den Fokus. Aber die Nummer, die ich eintippe, wird nicht im Eingabefeld angezeigt. – shreyaa