Next.js 来自 GetServerSideProps 道具的实时价格更新
Next.js live price updates from GetServerSideProps props
我正在尝试从 CoinGecko 获取比特币的实时价格。我在 index.js 中有 async GetServerSideProps 按预期工作,我将 return 道具传递给 <Home />
进一步传递给 <Main />
组件,最后传递给 <Calculatorbuy />
组件。一切正常,但我一开始只得到一次价格。获取实时价格更新的最佳方式是什么?我试图将 props 放在 <CalculatorBuy />
内的 setInterval 中,但它只会一次又一次地传递相同的值。我的文件:
index.js
export default function Home(props) {
const {data} = props.result;
return (
<div className="container">
<Head>
<title>Kup BTC</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"></meta>
</Head>
<Header />
<Main data={data}/>
<Footer />
</div>
)
}
export async function getServerSideProps(context) {
const result = await coinGeckoClient.simple.price({
ids: "bitcoin",
vs_currencies: "pln",
});
return {
props: {
result
},
}
}
main.js
export default function Main(props) {
const data = props.data;
return (
<main className="main">
<div style={{ display: showMe?"block":"none" }}>
<Calculatorbuy data = {data} />
</div>
</main>
)
}
calculatorbuy.js
export default function Calculatorbuy(props) {
const data = props.data;
const [value, setValue] = useState(0);
const currentPrice = parseFloat(data.["bitcoin"].pln);
console.log(currentPrice);
}
我想每 x 秒更新一次 calculatorbuy 中的价格
getServerSideProps
将使 Next.js 使用 getServerSideProps
返回的数据在每个请求的服务器端生成您的页面。您每次请求只会在服务器上获取一次价格。
如果您需要实时更新价格,您可以在 useEffect
中使用 setInterval
间隔使用 coinGeckoClient
。
这是在客户端获取价格的方法,但您可以添加一个间隔函数来轻松包装以下内容。
const [price, setPrice] = useState();
useEffect(() => {
const fetchPrice = async () => {
const result = await coinGeckoClient.simple.price({
ids: "bitcoin",
vs_currencies: "pln",
});
setPrice(result);
};
fetchPrice();
})```
我正在尝试从 CoinGecko 获取比特币的实时价格。我在 index.js 中有 async GetServerSideProps 按预期工作,我将 return 道具传递给 <Home />
进一步传递给 <Main />
组件,最后传递给 <Calculatorbuy />
组件。一切正常,但我一开始只得到一次价格。获取实时价格更新的最佳方式是什么?我试图将 props 放在 <CalculatorBuy />
内的 setInterval 中,但它只会一次又一次地传递相同的值。我的文件:
index.js
export default function Home(props) {
const {data} = props.result;
return (
<div className="container">
<Head>
<title>Kup BTC</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"></meta>
</Head>
<Header />
<Main data={data}/>
<Footer />
</div>
)
}
export async function getServerSideProps(context) {
const result = await coinGeckoClient.simple.price({
ids: "bitcoin",
vs_currencies: "pln",
});
return {
props: {
result
},
}
}
main.js
export default function Main(props) {
const data = props.data;
return (
<main className="main">
<div style={{ display: showMe?"block":"none" }}>
<Calculatorbuy data = {data} />
</div>
</main>
)
}
calculatorbuy.js
export default function Calculatorbuy(props) {
const data = props.data;
const [value, setValue] = useState(0);
const currentPrice = parseFloat(data.["bitcoin"].pln);
console.log(currentPrice);
}
我想每 x 秒更新一次 calculatorbuy 中的价格
getServerSideProps
将使 Next.js 使用 getServerSideProps
返回的数据在每个请求的服务器端生成您的页面。您每次请求只会在服务器上获取一次价格。
如果您需要实时更新价格,您可以在 useEffect
中使用 setInterval
间隔使用 coinGeckoClient
。
这是在客户端获取价格的方法,但您可以添加一个间隔函数来轻松包装以下内容。
const [price, setPrice] = useState();
useEffect(() => {
const fetchPrice = async () => {
const result = await coinGeckoClient.simple.price({
ids: "bitcoin",
vs_currencies: "pln",
});
setPrice(result);
};
fetchPrice();
})```