“Cannot read property ‘push‘ of undefined”问题的解决方法

本文介绍了在React应用中遇到'Cannot read property 'push' of undefined'错误的原因及解决方法。通过调整路由配置,将component属性设置为引入的组件对象,避免了该错误的发生,确保路由的正常工作。

app.jsx内容如下

import React, { Component } from 'react'

import AddPerson from './containers/AddPerson'
import ShowPerson from './containers/ShowPerson'
import EditPerson from './containers/EditPerson'
import { Route, Redirect, Switch } from 'react-router'
import { routes } from './routes'
import './app.less'


export default class App extends Component {
	render() {
		return (
			<div>
				<Switch>
					{
						routes.map((obj) => {
							console.log(obj.component);
							return (
								<Route key={obj.name} path={obj.path} component={obj.component}></Route>
							)
						})
					}
					<Redirect from='/' to='/show' component={ShowPerson} />
				</Switch>
			</div>
		)
	}
}

routes路由的内容如下
(为了进行路由拆分,单独使用routes/index.jsx进行路由路径处理)

import AddPerson from '../containers/AddPerson'
import EditPerson from '../containers/EditPerson'
import ShowPerson from '../containers/ShowPerson'
import React from 'react'

export  const routes = [
    {
        name: '/show',
        path:'/show',
        component: <ShowPerson/>
    },
    {
        name: '/add',
        path:'/add',
        component:<AddPerson/>
    },
    {
        name: '/edit',
        path:'/edit',
        component: <EditPerson/>
    }
]

报错图片
出现当前的报错
将routes/index.jsx改为如下

import AddPerson from '../containers/AddPerson'
import EditPerson from '../containers/EditPerson'
import ShowPerson from '../containers/ShowPerson'
import React from 'react'

export  const routes = [
    {
        name: '/show',
        path:'/show',
        component: ShowPerson
    },
    {
        name: '/add',
        path:'/add',
        component:AddPerson
    },
    {
        name: '/edit',
        path:'/edit',
        component: EditPerson
    }
]


将component的属性值改为所引入的对象,而不是组件,在App.jsx中即可正常使用所调用的组件。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值