gpt4 book ai didi

reactjs - 无法读取未定义的属性(读取 '0')

转载 作者:行者123 更新时间:2023-12-05 05:53:29 27 4
gpt4 key购买 nike

我有一个使用 NextJS Hook 在 React 中编码的页面,当我尝试呈现页面时,错误提示标题中的内容,我推测是因为我映射的对象在第一次加载时为空/未定义。我加了“?”对于我在页面上的每张 map ,它仍然给我这个错误......我注意到如果我在它给我错误之后留在那个页面上并按“Ctrl + shift + r”,页面加载正常。可能是什么原因造成的?

import {Fragment, useEffect} from "react";
import Head from "next/head";
import DashboardPage from "../../../../components/components/dashboard/DashboardPage";
import LayoutDashboard from "../../../../components/layout/LayoutDashboard";
import React from "react";
import Pusher from "pusher-js";
import useSWR, {mutate} from "swr";

const fetcher = async () => {
const response1 = await fetch("API");
const data1 = await response1.json();


const props = {
data: data1,
};
return props;
};

export default function Dashboard(props) {
const {data, error} = useSWR("data", fetcher);

useEffect(() => {
//Pusher.logToConsole = true;
var pusher = new Pusher("pshr", {
cluster: "eu",
});
const channel = pusher.subscribe("chnl");
channel.bind("chnl", function (data) {
console.log(data);
mutate("data");
});
}, []);

if (error) return "Error";
if (!data) return "Loading";

console.log(data);
return (
<Fragment>
<Head>
<title>Dashboard</title>
<link rel="icon" href="/favicon.ico" />

</Head>

<LayoutDashboard restaurantData={props?.restaurantData[0]}>
<DashboardPage
orders={data?.showItemsOnOrder}
dashboardCards={data?.dashboardCardInfo}
ordersGraph={data?.dashboardGraph}
/>
</LayoutDashboard>
</Fragment>
);
}

export async function getStaticPaths() {
const response = await fetch(`API`);
const data = await response.json();

const tables = [];
for (var i = 1; i <= data[0].restaurantTables; i++) {
tables.push({
restaurant: data[0].queryName,
tableNr: i.toString(),
});
}

return {
paths: tables.map((table) => {
return {
params: {
restaurantName: table.restaurant,
tableNr: table.tableNr,
},
};
}),
fallback: false,
};
}

export async function getStaticProps() {
const response = await fetch(`API`);
const data = await response.json();

return {
props: {
restaurantData: data,
},
revalidate: 1,
};
}

编辑我认识到如果我直接转到我想要的链接,该网站可以正常工作......当我在 nextJS 中调用带有 Link 标签的组件时它停止工作然后它抛出一个错误,它在标题中... 所以如果我直接转到链接,一切都按预期工作,也许这也是如果我单击我的链接然后刷新它页面工作的原因...那么 Link< 可能有什么问题/strong> 标签?这是我的代码:

<Link
href={{
pathname: "/restaurant/restaurantName/dashboard/",
query: {restaurantName: restaurantName},
}}
>
<div
className={
router.pathname == "/restaurant/[restaurantName]/dashboard"
? "text-blue-600 bg-gray-50"
: "text-gray-700 "
}
>
<div className="flex p-3 space-x-4 0 hover:bg-gray-50 hover:text-blue-600 cursor-pointer">
<DonutLargeIcon className=" text-gray-300" />
<p className="">Dashbord</p>
</div>
</div>
</Link>

最佳答案

1-如果数据在第一个组件渲染时未定义,我认为这种方法可行

  • 首次数据未定义
  • 获取秒时间数据,然后您可以按如下方式使用
const fetcher = async () => {
const response1 = await fetch("API");
const data1 = await response1.json();


const props = {
data: data1,
};
return props;
};
  • 如果查看你的抓取函数 return props= {data: data1}
  • const {data} =useSWR("data",fetching) 应该是 data.data.showItemOnOrder
return (
<Fragment>
<Head>
<title>Dashboard</title>
<link rel="icon" href="/favicon.ico" />

</Head>

<LayoutDashboard restaurantData={props?.restaurantData[0]}>
{data&& <DashboardPage
orders={data.data.showItemsOnOrder}
dashboardCards={data.data.dashboardCardInfo}
ordersGraph={data.data.dashboardGraph}
/>}
</LayoutDashboard>
</Fragment>
);

关于reactjs - 无法读取未定义的属性(读取 '0'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69874839/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com