Reactjs 显示获取的数据问题
我正在做一个React项目,在试图显示我刚获取的数据时遇到了一个问题Reactjs 显示获取的数据问题,reactjs,react-hooks,Reactjs,React Hooks,我正在做一个React项目,在试图显示我刚获取的数据时遇到了一个问题 。。。 常量[clientImport,setClientImport]=useState(null); const[isLoading,setIsLoading]=useState(false); useffect(()=>{ fetchData(); }, []); const fetchData=async()=>{ 设置加载(真); const result=等待axios.get('http://localhost:
。。。
常量[clientImport,setClientImport]=useState(null);
const[isLoading,setIsLoading]=useState(false);
useffect(()=>{
fetchData();
}, []);
const fetchData=async()=>{
设置加载(真);
const result=等待axios.get('http://localhost:8080/client');
setClientImport(结果);
控制台日志(结果);
console.log(clientImport);
};
const formChange=(e)=>{
设置加载(假);
log(clientImport.data[2].nom);
常量值=e.target.value;
设定状态({
……国家,
[e.target.name]:值
})
}
返回
{isLoading?(加载…):(aze和{clientImport.data[2].nom}
...
因此,我的提取工作正常,我在formChange
方法中对其进行了测试,得到了clientImpot.data[2].nom
的结果
但每当我试图在JSX中显示相同的内容时,我都会得到一个
TypeError:clientImport为空
上面的版本给了我错误。当我删除{clientImport.data[2].nom}
时,它工作正常
每当我试图在返回中显示任何clientImport
值时,它都不起作用
这只是为了调试,我把它放在那里,目标是把它放在那里,最终映射:
客户-
新顾客
{clientImport.data.map((c,i)=>(
{c.name}-{c.prenom}-{}})
谢谢你的帮助
编辑:
有关更多信息:
执行此操作时:const[clientImport,setClientImport]=useState(null)代码>
使用此:clientImport.data.map
它返回:TypeError:clientImport为null
但如果我用“”(或[])来声明它,比如:
const[clientImport,setClientImport]=useState(“”)代码>
它显示:TypeError:imports.client.data未定义
Idk,如果这有帮助的话,但我在这里有点结巴:p.这就是为什么不依次运行以下函数的原因
setClientImport(数据)
setIsLoading(错误)
当isLoading为false时,尝试显示clinetImport数据。
一旦运行了上述函数,isLoading将首先变为false,然后更新clientImport。
更新isLoading时,react会再次尝试渲染,但此时clientImport为null
你需要像这样更新
<Form> {isLoading || clientImport === null? (
<div>Loading ...</div>
) : (<div>aze and {clientImport.data[2].nom}</div>)}
{isLoading | | clientImport===null(
加载。。。
):(aze和{clientImport.data[2].nom})
问题已解决
我需要将我的导入声明为:
const [clientImport, setClientImport] = useState([]);
取回类似于:
const result = await axios.get('http://localhost:8080/client');
setclientImport(result.data);
至于地图:
clientImport.map
问题显然是因为我声明为null并更改了类型,而更改类型是个坏主意:p.是的,我在尝试调试时实际上把它弄糟了,糟糕的是,代码不清楚,但错误仍然存在。每当我尝试渲染clientImport时,它都会显示该错误。我可以删除所有加载的东西,它仍然会这样做。如果将{clientImport.data[2].nom}放在返回函数中的任何位置,则会显示与加载无关的相同错误。数据就在那里,因为它在formChange中显示得很好(每次我在表单中输入任何内容时都称为formChange)。