ReactJS 设置超时/设置间隔
ReactJS SetTimeout / setInterval
我正在尝试让以下内容每 30 秒重新加载一次。
componentDidMount() {
fetch('https://example.com/json')
.then((res) => res.json())
.then(
(result) => {
this.setState({
isLoaded: true,
items: result.data,
});
},
// Note: it's important to handle errors here
// instead of a catch() block so that we don't swallow
// exceptions from actual bugs in components.
(error) => {
this.setState({
isLoaded: true,
error,
});
},
);
}
我曾尝试将其包装在 setInterval
中,但没有成功。我想知道如何将它变成一个函数,以便我可以根据需要重新加载它。
假设您想在进入组件后每 30 秒获取一次数据,然后在组件退出时停止此获取:
componentDidMount() {
this.myInterval = setInterval(() => {
fetch('https://example.com/json')
.then(res => res.json())
.then(
(result) => {
this.setState({
isLoaded: true,
items: result.data
});
},
// Note: it's important to handle errors here
// instead of a catch() block so that we don't swallow
// exceptions from actual bugs in components.
(error) => {
this.setState({
isLoaded: true,
error
});
});
}, 30000);
}
componentWillUnmount() {
clearInterval(this.myInterval);
}
应该够了。
我建议您从 componentDidMount 方法中取出 fetch 函数。将它写在一个名为 loadData() 的函数或任何你想命名的函数中。然后在 loadData() 函数中用 like 包装你的获取逻辑
正在关注。
const loadData = () => {
setInterval(
async function(){
//your fetch logic here with await
}, 30000);
}
componentDidMount() {
loadData()
}
我正在尝试让以下内容每 30 秒重新加载一次。
componentDidMount() {
fetch('https://example.com/json')
.then((res) => res.json())
.then(
(result) => {
this.setState({
isLoaded: true,
items: result.data,
});
},
// Note: it's important to handle errors here
// instead of a catch() block so that we don't swallow
// exceptions from actual bugs in components.
(error) => {
this.setState({
isLoaded: true,
error,
});
},
);
}
我曾尝试将其包装在 setInterval
中,但没有成功。我想知道如何将它变成一个函数,以便我可以根据需要重新加载它。
假设您想在进入组件后每 30 秒获取一次数据,然后在组件退出时停止此获取:
componentDidMount() {
this.myInterval = setInterval(() => {
fetch('https://example.com/json')
.then(res => res.json())
.then(
(result) => {
this.setState({
isLoaded: true,
items: result.data
});
},
// Note: it's important to handle errors here
// instead of a catch() block so that we don't swallow
// exceptions from actual bugs in components.
(error) => {
this.setState({
isLoaded: true,
error
});
});
}, 30000);
}
componentWillUnmount() {
clearInterval(this.myInterval);
}
应该够了。
我建议您从 componentDidMount 方法中取出 fetch 函数。将它写在一个名为 loadData() 的函数或任何你想命名的函数中。然后在 loadData() 函数中用 like 包装你的获取逻辑 正在关注。
const loadData = () => {
setInterval(
async function(){
//your fetch logic here with await
}, 30000);
}
componentDidMount() {
loadData()
}