Reactjs 获取错误消息";李:' ;;键';不是道具”;
我正在使用React(版本15.4.2),并使用数据库中的查询结果动态填充Reactjs 获取错误消息";李:' ;;键';不是道具”;,reactjs,Reactjs,我正在使用React(版本15.4.2),并使用数据库中的查询结果动态填充。我以为我已经在上正确设置了“key”属性,但显然我没有-当列表呈现时,我得到了错误: 警告:李:“钥匙”不是道具。试图访问它将导致返回“undefined”。如果需要访问子组件中的相同值,则应将其作为不同的道具传递 以下是我的列表的代码: function UserList(props) { return( <ul className="UserList"> {
。我以为我已经在
上正确设置了“key”属性,但显然我没有-当列表呈现时,我得到了错误:
警告:李:“钥匙”不是道具。试图访问它将导致返回“undefined”。如果需要访问子组件中的相同值,则应将其作为不同的道具传递
以下是我的列表的代码:
function UserList(props) {
return(
<ul className="UserList">
{
props.user_list.map((user) => (
<li className="UserListItem" key={user.id}>
<Link to={`/users/${user.id}`}>{user.first_name} {user.last_name}</Link>
</li>
))
}
</ul>
);
}
函数用户列表(道具){
返回(
{
道具用户列表地图((用户)=>(
-
{user.first\u name}{user.last\u name}
))
}
);
}
我看了一下,在我看来这应该是正确的。如果有人能澄清我的错误,我将不胜感激。我的建议是,试着看看如果你做
道具.user\u list.map((user,index)
,对于键
,给它索引
,而不是用户id
如果此过程使警告消失,您可以合理地确定您有一个重复的id
,用于用户
。在这种情况下,我建议您将注意力转向生成用户列表的后端。id
是如何创建的?可能值得一看,以确保您唯一地标识您的用户美国
如果此测试仍然存在错误,我建议尝试升级react版本,但我高度怀疑这种情况。可能user.id重复,请再次检查您试图访问props.key的代码中的其他地方 基本上,“关键”道具不会传递给子组件
React说:“React使用特殊道具(ref和key),因此不会转发到组件。”如果使用道具类型验证道具,如下所示:
Progress.propTypes = {
labels: PropTypes.array.isRequired,
tab: PropTypes.func.isRequired,
key: PropTypes.number.isRequired. <!--- this line will trigger the error--->
}
Progress.propTypes={
标签:PropTypes.array.isRequired,
选项卡:需要PropTypes.func.isRequired,
关键字:PropTypes.number.isRequired。
}
从PropTypes检查中删除“key”以删除此错误。该警告是为哪一行生成的,您能显示该行上的内容吗?(以及它周围的行)。您是否在任何地方调用
props.key
?对于第一条评论,我不完全确定-此警告是由warning.js
生成的,它是记录到我控制台的唯一一行。对于第二条评论,不,我没有调用props.key
任何地方-此组件中唯一的其他代码是导入
和导出默认值
。我应该在哪里调用它?我收到了相同的警告消息,但我认为这是一种错误,因为如果你以匿名模式打开页面,不会抛出任何警告消息。我看不到此代码有任何问题。我用react 15.4.2模拟了一个jsbin,它没有显示任何错误。正确的答案,但给出的信息很少关于原因。根据React:“React使用特殊道具(参考和键),因此不会转发给组件。”。基本上,“键”道具不会传递给子组件。信息:Miquel我编辑了答案,以添加您提到的详细信息。谢谢