【发布时间】:2018-03-07 01:04:21
【问题描述】:
我是新手,我正在尝试开始使用它。
出于这个原因,我正在尝试创建一个应用程序,例如 angular 中的英雄之塔(它显示英雄列表,通过单击其中一个,您可以导航到详细信息页面)。
这是我的代码
import React from 'react';
import ReactDOM from 'react-dom';
import {
Route,
Switch,
HashRouter,
Link
} from 'react-router-dom'
class Test extends React.Component {
render() {
var prod = this.props.persons;
return (
<div>
<nav>
<ul>
{prod.map(p => (
<li key={p.id} p={p}><Link key= {p.id} to='/detail'>{p.name}</Link> </li>)
)}
</ul>
</nav>
{
<Switch>
<Route exact path='/' component= {Test} />
<Route path='/detail' component= {Detail} />
</Switch>}
</div>
)
}
}
class Detail extends React.Component {
render() {
return (
<p> {this.props.person.name} </p>
)
}
}
var PERSONS = [
{id:'1', name: 'name1', age: '20' },
{id:'2', name: 'name2', age: '21' },
{id:'3', name: 'name3', age: '22' },
{id:'4', name: 'name4', age: '23' },
{id:'5', name: 'name5', age: '24' },
{id:'6', name: 'name6', age: '25' }
];
ReactDOM.render(
<HashRouter>
<Test persons={PERSONS} />
</HashRouter>,
document.getElementById('root'));
【问题讨论】:
-
错误表示
this.props.persons未定义,很可能您没有正确传递它。 -
这部分的两个罪魁祸首:
<li key={p.id} p={p}...。 (1) 您将键绑定到每个人员对象的id,您尚未在PERSONS数组中的任何人员对象上定义该键。 (2)p不作为原生 HTML 元素li的property存在。 -
@Nit,感谢您的回复,但正如您所见,我通过了 people 道具,从渲染 (
) 到 Test 组件 -
-
@bazzells, 1) 正如你所说的 id 元素属性不存在,实际上我只是忘记添加。我做了一个包含它的更新,但错误仍然存在。
标签: javascript reactjs react-router