作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 React 与 REST API 进行交互,并且我意识到,当我获取数据时,没有数据会调用一次 render
,然后再次使用数据。
当我尝试处理此数据时,这会引发异常,但我可以使用 if 语句来检查数据是否为空。不过,我不确定是否需要这样做。
class App extends Component {
state = {
TodoList: {},
};
componentWillMount() {
axios.get("http://localhost:5001/1").then((response) => {
this.setState({
TodoList: response.data,
});
});
}
render() {
console.log(this.state);
return <h1>hello </h1>;
}
}
最佳答案
这是完全正常的。
您的App
组件流程如下:
render
加载组件的方法componentDidMount
中的代码axios.get
这是异步操作this.setState
更新组件状态App
组件检测到状态有更新,因此执行 render
再次加载组件的方法因此,您绝对应该处理 this.state.TodoList
的情况。没有数据,这是在第一次加载时发生的
更新:
组件生命周期componentWillMount
现已弃用,这意味着您不应再使用它。将其替换为 componentDidMount
反而。从功能上来说,它们在您的示例中应该没有区别
关于reactjs - 从 REST API 获取数据时会调用渲染两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54384871/
我创建了一个分支来开发新功能。由于这个新功能完全是作为一个新项目开发的,唯一可能的冲突来源是解决方案文件。 随着功能的开发,主分支更新了几次。当我完成开发和测试时,我做了: git checkout
我是一名优秀的程序员,十分优秀!