【发布时间】:2022-02-11 23:15:01
【问题描述】:
我有一个加密货币烛台图,它有 1 分钟、30 分钟等不同的时间范围。我目前有
const [data, setData] = useState[]
useEffect(() => {
const fetchPrice = async () => {
const { data } = await axios.get(`/api/apii?slug=${poolName[0].pool_id}&timeframe=`${1h}``); // default is 1h
const btcusd = data.data.results.map(
(d) => {
return {
open: d.open,
close: d.close,
low: d.low,
high: d.high,
time: toDateStamp(d.datetime),
};
}
);
setData(btcusd)
};
fetchPrice()
}, []);
以上是用户访问时的初始状态,他或她将看到一个 1 小时图表数据。所以有这个 onClick 按钮,它将根据他选择的时间范围获取并设置新状态。如果我在一个时间范围内设置数据,它可以工作,但如果我设置另一个时间范围,我如何将它们分开?
编辑:
我的坏人,我没有问题让 useffect 再次运行,因为每当用户点击新的时间范围时,我都有另一个 useeffect 用于此目的。我的问题是,如果用户选择了他之前选择的时间范围,我如何才能将选择的时间范围存储到一个状态中,然后再次重新使用它们?这很好,因为我可以停止传出网络请求。
【问题讨论】:
-
请创建一个状态变量来存储
poolName的数组索引,并将其设置为0 或1 或onClick方法中的其他值。假设您使用:const [chosenIdx, setChosenIdx] = useState(0);(& 在onClick内,您根据用户选择 1 或 2 或 0 或其他值使用setChosenIdx(1)),然后在useEffect中将[]参数更改为 @ 987654330@. -
嘿@thenotorious!签出这个答案它肯定会帮助你stackoverflow.com/questions/63066911/…
-
@jsN00b7 之前的时间范围也会被存储吗?会很好,这样我就可以在用户再次选择状态时停止获取请求。
标签: javascript reactjs next.js