reactjs - React 组件未实例化
问题描述
我有一组由 GraphQL 查询检索的数据。我可以在控制台中打印出来,我可以看到对象数组。
function ProductsPage(){
const { data, loading, error } = useQuery(
gql`
query{
getProducts(first: 25, offset: 1) {
id
}
}
`, { errorPolicy: 'all' });
if(loading) return <Layout><p>Loading...</p></Layout>
if(error){ console.log(error); return <Layout><p>Error...</p></Layout>}
if(data) {
console.log(data.getProducts);
return(
<Layout>
<ul>
{data.Products.map(function(item){
console.log(item);
<Product data={item}></Product>
})}
</ul>
</Layout>
)
}
};
这是产品对象:
export default function Product(props){
return(
<div>
<p>product:</p>
<p>{props.data.id}</p>
</div>
)
}
我可以在控制台日志中看到对象数组,还可以在 map() 函数的控制台中看到每个对象都被打印出来。
但是实际的产品对象永远不会被实例化——我可以通过在其中放置一个 console.log("hello") 来检查。
一切似乎都应该起作用。
解决方案
但是实际的产品对象永远不会被实例化
map()
将需要返回<Product />
。
{data.Products.map(function(item){
console.log(item);
return <Product data={item} />; // return here
})}
或者
{
data.Products.map(item => <Product data={item} />)
}
推荐阅读
- scala - Scala Spark:使用 Salting 处理联接中的数据倾斜
- powershell - 如何将此字符串转换为 JSON?
- javascript - 如何在 Electron 的工作线程中编译 wasm?
- sas - SAS SGPLOT VBOX:在箱线图上显示均值和中位数
- material-design - Material Design Lite - 多选下拉菜单
- javascript - React hooks:从 useEffect 调度动作
- javascript - 如何将许多带有自定义文本的标记添加到openlayers 5
- environment-variables - 如何使用 Gitlab CI 部署无服务器功能?
- angularjs - 如何将参数注入 $uibModal 中的内联控制器函数
- excel - Excel VBA-SaveCopyAs 然后将活动工作簿更改为新创建的文件