gpt4 book ai didi

javascript - 确保在重新渲染组件时执行 componentDidMount 中的代码

转载 作者:行者123 更新时间:2023-11-30 11:17:01 25 4
gpt4 key购买 nike

我一直在调试我的 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 方法?

谢谢!

最佳答案

您可以将逻辑放在一个单独的方法中,并在 genId 属性更改时在 componentDidMountcomponentDidUpdate 中调用它。

示例

class App extends React.Component {
componentDidMount() {
this.fetchData(this.props.genId);
}

componentDidUpdate(prevProps) {
if (this.props.genId !== prevProps.genId) {
this.fetchData(this.props.genId);
}
}

fetchData = (genId) => {
axios.get(`/api/dungeon_generation/texture-files/${genId}/files`)
.then((response) => {
this.setState({ files: response.data })
console.log("axios get: ", this.state.files);
})
.catch((error) => {
console.log(error);
});
};

render() {
// ...
}
}

关于javascript - 确保在重新渲染组件时执行 componentDidMount 中的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51159493/

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