我已经调试了我的react web应用一段时间了,现在试图弄清楚为什么我的状态没有显示我的一个组件的更新。
我终于意识到我在我的组件中使用了这样的axios:
async componentDidMount() {
axios.get(`/api/dungeon_generation/texture-files/${this.props.genId}/files`)
.then((response) => {
this.setState({ files: response.data })
console.log("axios get: ", this.state.files);
})
.catch((error) => {
console.log(error);
});
}
字符串
因此,当我重新加载该组件时,componentDidMount不会再次被调用。
我怎样才能改变它,使axios.get方法在第一次加载组件时和需要更新状态并重新加载组件时都能运行?
谢谢你,谢谢
3条答案
按热度按时间v09wglhw1#
您可以将逻辑放在一个单独的方法中,并在
genId
属性更改时在componentDidMount
和componentDidUpdate
中调用该方法。示例
字符串
5cnsuln72#
您可以在
componentDidMount
和componentDidUpdate
中执行API调用。请参阅
componentDidUpdate
的文档。b5buobof3#
componentDidMount
仅在组件首次装入DOM
时调用一次。componentDidUpdate
被调用。componentDidUpdate
不会在初始渲染时被调用。因此,如果它是某种后期渲染操作,请同时使用componentDidMount
和componentDidUpdate
。