我想从输入获取数据,所以我创建了一个如下所示的受控组件
import React, { useState } from "react";
import axios from 'axios'
type Props = {data:any};
function Locality({data}: Props) {
const [city, setCity] = useState("13000");
return(
<input
list="city"
type="text"
placeholder={`Code postale, France`}
onChange={(e) => {
setCity(e.target.value) ;
}}
/>
)
}
我想获取一个url根据城市设置在状态,但我不知道如何给予这个状态到我的获取下面:
export async function getStaticProps(){
const getDataUrl:string = `https://geo.api.gouv.fr/communes?codePostal=${city}&format=geojson`
const result = await axios.get(getDataUrl)
const data = result.data
return {
props:{
data : data.data[0].attributes
}
}
}
你知道吗?
2条答案
按热度按时间rkue9o1l1#
nextjs
getStaticProps
用于在服务器上获取构建时数据。React.useState
用于在客户机上管理运行时状态如果获取数据依赖于某些用户交互,请尝试使用
useEffect
和useState
在客户端上执行此操作您可能还需要研究一下nextjs
getServerSideProps
zynd9foi2#
正如@ksav所指出的,您需要使用一些本地状态,但也需要一个效果来获取数据。
下面是一个示例,如何做到这一点:(未经测试,为想法)
如果你使用我或@ksav建议的上述效果,我建议你寻找XHR取消和效果去抖动,以避免当用户在框中键入内容并同时发送许多请求时 * 将 * 发生的错误。例如,如果我键入'75000',它将发送5个请求,如果第三个请求是最慢的,结果最终可以包含
750
的结果,而不是75000
。