当前位置: 首页 > 面试题库 >

React.js:作为道具访问时键未定义

武元白
2023-03-14
问题内容

工具:Reactjs 0.14.0 Vanilla Flux

我需要唯一标识符的原因有两个:

  1. 儿童和解
  2. 跟踪点击了哪个孩子

因此,假设我有一个看起来像这样的消息列表:

[
      {
        id: 1241241234,  <-----The unique id is kept here
        authorName:"Nick"
        text:"Hi!"
      },
      ...
]

现在,我使用“ Array.prototype.map()” 在所有者组件内部创建“
ownee”
组件(MessageListItemMessageSection

function getMessageListItem)(message) {

  return (
    <MessageListItem key={message.id} message={message}/>
  );
}

var MessageSection = React.createClass({
   render: function(){
       var messageListItems = this.state.messages.map(getMessageListItem);
       <div>
           {messageListItems }
       </div>
   }
});

但是this.props.key在MessageListItem中是未定义的,即使我知道在传递时已定义的事实也是如此。

var ConvoListItem = React.createClass({
  render: function() {
    console.log(this.props.key); //Undefined
  }
});

我猜有一个原因,React不让“键”用作道具。

题:

如果我不能使用key作为道具-那么处理在包含状态的子元素的动态列表上键入和设置唯一标识符的双重性需求的正确方法是什么?


问题答案:

最好使用id。然后在eventHandler中可以拥有event.target.id。

function getMessageListItem)(message) {



  return (

    <MessageListItem key={message.id} id={message.id} message={message}/>

  );

}


 类似资料:
  • 问题内容: 当我将商店从道具传递到其他组件时,它变得不确定。我正在使用时会发生这种情况,但如果没有这种情况,它会很好。路线部分 路线在组件中 布局方法 我正在像这样通过应用程序组件传递商店 该商店将从这样的布局组件转到主体组件 在主体组件中,我是从正在node.js服务器中运行的api获取的 我在功能中出现错误 错误 无法读取未定义的属性“地图” 奇怪的是,当我在没有路线的情况下工作时,一切都会好

  • 我试图在React中构建一个组件,它从JSON源获取信息,并使用其中的一些信息创建可以传递到其他单独组件的状态。虽然我还没有将状态传递到单独的组件中,但我已经能够使用JSON中的信息更新状态。然而,当我加载我的页面时,我会得到一个错误代码,我想在继续我的项目之前对其进行整理,以防在代码中留下错误会产生意外的副作用。错误代码如下所示: js:1警告:列表中的每个子级都应该有一个唯一的“key”属性。

  • 我是新来Java。我正在写一个二维游戏,我决定使用哈希地图来存储我的地图数据,因为我需要支持我的地图坐标的负索引。这是因为地图的大小可以在游戏过程中增长。 我编写了一个自定义Pair类,用于存储最终的x和y值。我使用这个Pair对象作为我的HashMap的密钥。我的值是自定义Cell类的实例。 我已经声明我的HashMap如下:

  • 我试图通过反应路由器将道具从一个组件传递到另一个组件。当我试图从子组件获取道具时,我得到了这样一条消息。这是我的代码: Tracks.jsx: app.jsx: Album.jsx:

  • 我试图理解下面的反应HOC; 下面是另一个组件; 具体来说我是想了解 如果它“DisplayTheCret”访问道具“secretToLife”或WrappedComponent?正确看待这一问题的方法是什么? “const WrappedComponent=withSecretToLife(displaytescret);”行位于“const displaytescret=props”行之后=

  • 我真的不明白{…道具}能做什么?我知道你可以通过这种方式更容易地“卸载”所有道具,但是如果我们还没有任何道具呢?例如,考虑这个代码 道具在这种情况下是做什么的,因为我们这里没有任何组件,这是一个新的组件,这是否意味着当我重用这个组件时,我可以给它任何我想要的道具?