这是设置。在上一个问题中,我发现我可以通过子组件中的状态传递对象属性,然后使用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);
}
为什么我可以在将它放入setInterval之后访问this.props.arrival,但不能在它之外?
答案 0 :(得分:1)
setInterval
确实会使组件更新每x秒的数量。
尝试使用下面的componentDidUpdate
将道具设置为子组件中的状态,看看它是否有效
componentDidUpdate(prevProps) {
if (prevProps !== this.props) {
this.setState({arrival: this.props.arrival});
}
}