Reactjs 显示获取的数据问题

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:

我正在做一个React项目,在试图显示我刚获取的数据时遇到了一个问题

。。。
常量[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)。