【发布时间】:2021-10-03 05:56:27
【问题描述】:
我用初始值声明了一个名为product 的状态。
但是,在加载新值之前,它会显示为未定义一次。
当我想映射它的值时,这会导致问题。
import React, { useEffect, useState } from 'react';
import './App.css';
import { useQuery, gql } from "@apollo/client";
import { LOAD_PRODUCT } from "./GraphQL/Queries";
import Product from './Components/Product';
function App() {
const { error, loading, data } = useQuery(LOAD_PRODUCT)
const [product, setProduct] = useState<Product>({
node: {
id: 0,
title: "Test"
}
})
useEffect(() => {
setProduct(data)
}, [data])
if(loading) return <h1>Loading...</h1>
console.log(product)
return (
<>
<Product product={product}/>
</>
);
}
export default App;
【问题讨论】:
-
由于是加载状态后才记录的,可能是数据的转换,与初始值无关。在加载状态之前记录应该没问题。请在沙箱中创建一个可重现的示例。 How to create a Minimal, Reproducible Example
-
而且你只是复制状态,应该有一些初始值API你可以传递给
useQuery。
标签: javascript reactjs react-hooks use-state