gpt4 book ai didi

reactjs - React - 在呈现获取的数据之前显示加载消息

转载 作者:行者123 更新时间:2023-12-05 05:11:07 25 4
gpt4 key购买 nike

我正在尝试构建一个与服务器通信以从数据库查询数据的 React 应用程序。我想在应用程序获取数据时显示加载消息。这是代码片段:

class App extends React.Component {
constructor(props) {
super(props)

this.clickHandler = this.clickHandler.bind(this);

this.state = {
isLoading: false,
data: [],
content: ''
}
}

clickHandler() {
this.setState({ isLoading: true });
fetch('url_1')
.then(res => res.json())
.then(data => this.setState({ data: data }, () => {
this.getContentByData() // loading message vanished before content is displayed
}))
.then(() => this.setState({ isLoading: false }));
}

getContentByData() {
fetch(`url_2?data=${this.state.data}`)
.then(res => res.json())
.then(content => this.setState({ content: content }))
}

render() {
return (
<div>
{this.state.isLoading ? <h1>loading</h1>: null}
<h6>{this.state.content}</h6>
<button type="button" onClick={this.clickHandler}>Click Me!</button>
</div>
)
}
}

ReactDOM.render(<App />, document.getElementById('app'))

加载消息在显示内容之前就消失了。我该如何解决这个问题?

最佳答案

您可以将您的render 方法更改为如下所示:

render() {
let content = <Loader />;
if (!this.state.isLoading && this.state.content) {
content = (
<h6>{this.state.content}</h6>
<button type="button" onClick={this.clickHandler}>Click Me!</button>
)
}
return (
<div>
{content}
</div>
)
}

Loader 是您的加载器组件。当然它也可以是h1标题或者任何你想要的。

关于reactjs - React - 在呈现获取的数据之前显示加载消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55824456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com