Zum Beispiel, ich habe diese Art von Code:Ist es schlecht, this.setState() von this.setState() in React.js aufzurufen?
class Example extends Component {
constructor() {
super();
this.state = {
value: "",
disabled: false,
isLoaderOpened: false
};
}
render() {
return (
<div>
<input
value={this.state.value}
onChange={this.onChange}
disabled={this.state.disabled}
/>
<button onClick={this.onClick}>Load</button>
{this.state.isLoaderOpened && <div>Loading</div>}
</div>
);
}
onClick =() => this.fetchData(this.state.value);
onChange = e => this.setState({ value: e.target.value });
fetchData = value => {
Promise.resolve()
.then(() => this.setState({ disabled: true },() => showLoader()))
.then(() => this.handleRequest(this.props.url, value))
.then(res =>
this.setState({ data: res.json() },() => this.hideLoader())
);
};
showLoader =() => this.setState({ isLoaderOpened: true });
hideLoader =() => this.setState({ isLoaderOpened: false });
handleRequest = (url, value) => fetch(url + "?value=" + value);
}
Ist es schlimm, dass ich von setState
Funktion aufrufen, die auch setState
verwendet? Ich möchte häufig verwendete Methoden wiederverwenden und der Kürze halber ist es bequem, sie als Callbacks in setState
zu übergeben.
warum nicht Legen Sie einfach den Loader im ursprünglichen SetState-Aufruf geöffnet? – Neal
Sie könnten einfach alle Teile des Zustands, die Sie benötigen, direkt dort setzen, anstatt eine Methode aufzurufen, die dasselbe tut. Ich würde sagen, dass eine separate "verstecken" und "zeigen" -Methode schlecht ist. Verwenden Sie eine "Toggle" -Funktion und übergeben Sie 'true' oder' false' nach Bedarf. – jmargolisvt
@Neal Weil es seltsam wäre, wenn ich irgendwo original setState aufrufen würde und an einer Stelle - showLoader/hideLoader Methoden –