gpt4 book ai didi

javascript - 为什么我*只能*访问 setInterval 内的对象属性?

转载 作者:行者123 更新时间:2023-12-03 02:36:11 28 4
gpt4 key购买 nike

这是设置。在上一个问题中,我发现我可以通过子组件中的状态传递对象属性,然后使用 componentDidUpdate 获取该对象属性。在这种情况下,状态和属性都称为到达。

这是基本代码...

export default class App extends Component {
constructor(){
super();
this.state = {
arrival: {}
}
}

axiosFunc = () => {
axios.get('https://api.warframestat.us/pc').then(results => {
this.setState({
arrival: results.data.voidTrader.activation,
});
setTimeout(this.axiosFunc,1000 * 60);
})
}

componentDidMount() {
this.axiosFunc();
}

}

现在在子组件中,我无法像这样访问到达属性......

componentDidMount(){
console.log(this.props.arrival)
}

但是我可以把它放在componentDidUpdate中。我还意识到我可以将它放在 setInterval 中,然后在 componentDidMount 中运行该 setInterval。

componentDidMount() {

this.intervalFunc = setInterval(() => {
console.log(this.props.arrival);
}
, 1000);

}

为什么将 this.props.arrival 放入 setInterval 后可以访问,但放在 setInterval 之外就不能访问?

最佳答案

然而,我可能完全错了:我相信你的问题是基于这样一个事实,即 React 子级无法判断其 props 是否已更新,这导致组件无法重新渲染(因此继承了 props) )。但是,使用 setInterval 确实会提示组件每 x 秒更新一次。尝试使用 componentDidUpdate 将 props 设置为子组件中的状态,如下所示,看看它是否有效

componentDidUpdate(prevProps) {
if (prevProps !== this.props) {
this.setState({arrival: this.props.arrival});
}
}

关于javascript - 为什么我*只能*访问 setInterval 内的对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48528023/

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