【发布时间】:2022-01-06 21:50:16
【问题描述】:
在构建我的 React 应用程序以进行部署时,我收到此错误
TypeError:无法读取未定义的属性“0”
当我在 port3000 上进行渲染时,我没有看到这个错误,但只是在构建应用程序时得到它。
谁能帮忙解决这个问题?
import { useState } from "react";
import styles from "./Tabs.module.css"
const Tabs = ({ children}) => {
const [activeTab, setActiveTab] = useState (children [0].props.label);
const handleClick =( e, newActiveTab ) => {
e.preventDefault();
setActiveTab(newActiveTab);
}
return (
<div>
<ul className= {styles.tabs}>
{children.map ((tab) => {
const label = tab.props.label;
return (
<li
className= {label == activeTab ? styles.current : ""}
key= {label}
>
<a href="#" onClick={(e) => handleClick (e, label)}>{label}
</a>
</li>
)
})}
</ul>
{children.map ((tabcontent1) => {
if (tabcontent1.props.label == activeTab)
return (
<div key= {tabcontent1.props.label} className= {styles.content}>{tabcontent1.props.children}
</div>
);
})}
</div>
);
}
export default Tabs ;
【问题讨论】:
-
children [0]尚未定义。childrenprop 并不是真正的数组,您应该使用顶级 Children 来映射子组件。你在 Nextjs 中使用 SSR 吗? -
您的页面可能正在静态呈现。因此,在构建时
children未定义。下一个 js 尝试静态渲染它,因此它访问它尝试执行undefined[0]的初始状态,这是一个错误。因此,让您的 children 变量可用于静态侧面渲染。 -
@rakesh shrestha。感谢您的贡献。请表达代码以使 children 变量用于静态侧渲染
-
是的,我使用 SSR,但我认为我没有定义它,请协助
标签: arrays reactjs visual-studio-code next.js react-props