问题描述
发出了大量代码以便于阅读。
TypeError: undefined is not an object (evaluating 'undefined.props')
<PortfolioAssets data={this.props.data} onClose={function(event){ closeCard(); handleSnackbarClick()}} />
我正在将道具从App.js
传递到DashboardView
组件:
import {
Dashboard as DashboardView,} from './views';
function App() {
const [response,setResponse] = useState("");
useEffect(() => {
const socket = socketIOClient(ENDPOINT);
socket.emit('test',{"name": "jim"})
socket.on("test_client",data => {
setResponse(data);
});
},[]);
const Routing = [
{
path: 'app',element: <DashboardLayout />,children: [
{ path: 'dashboard',element: <DashboardView data={response}/> },]
}
];
const routing = useRoutes(Routing);
return (
<ThemeProvider theme={theme}>
<GlobalStyles />
{routing}
</ThemeProvider>
);
}
export default App;
然后我尝试将道具插入DashboardView
内:
const Dashboard = (props) => {
const classes = useStyles();
const [showCard,setShowCard] = React.useState(true)
const closeCard = () => setShowCard(false)
return (
<div style = {{padding: "2%"}} >
<ResponsiveReactGridLayout
>
{ showCard ? <div key="a" data-grid={{x: 0,y: 0,w: 1,h: 4,minW: 1,minH: 4,maxW: 4,maxH: 4}}>
<PortfolioAssets data={this.props.data} onClose={function(event){ closeCard(); handleSnackbarClick()}} />
</div> : <div key="dummy"></div> }
</ResponsiveReactGridLayout>
</div>
)
}
export default Dashboard;
但是我得到了'TypeError: undefined is not an object (evaluating 'undefined.props')'
我希望道具来自Flask后端(包含JSON数据),以便随后可以用JSON数据填充每个组件。
感谢您的帮助,谢谢。
解决方法
我发现this.props.data
必须是props.data
,因为它不是课程。