Mam ten komponent:Jak wyłączyć przycisk w React.js
import React from 'react';
export default class AddItem extends React.Component {
add() {
this.props.onButtonClick(this.input.value);
this.input.value = '';
}
render() {
return (
<div className="add-item">
<input type="text" className="add-item__input" ref={(input) => this.input = input} placeholder={this.props.placeholder} />
<button disabled={!this.input.value} className="add-item__button" onClick={this.add.bind(this)}>Add</button>
</div>
);
}
}
chcę przycisk jest wyłączony, gdy wartość wejściowa jest pusta. Ale powyższy kod nie działa. Jest napisane:
add-item.component.js:78 Uncaught TypeError: Cannot read property 'value' of undefined
wskazując na disabled={!this.input.value}
. Co mogę tu robić źle? Zgaduję, że być może ref nie jest jeszcze utworzony, gdy jest wykonywana metoda render
. Jeśli tak, to czym jest obejście?
To jest poprawna odpowiedź! Aby zaktualizować dane wejściowe, należy użyć stanu wewnętrznego, a przycisk powinien się po prostu sprawdzić. +1 –
this.state ma ograniczenie, że ponownie renderuje interfejs, więc jeśli piszesz w polu tekstowym w elemencie potomnym i jesteś powiązany z zdarzeniem onChange, traci ono ostrość z pola tekstowego. Jeśli jest w tym samym komponencie, jest w porządku, ale gdy jest używany w komponencie potomnym, traci skupienie. – Dynamic
@Dynamic To nie powinno się zdarzyć. Czy masz działający tego przykład? –