我想呈现一个消息数组:
此代码适用于:
render() {
return this.props.messages.map((message) => (
<Message
key={message.id}
message={message}
/>
));
}
但是如果我写这样的代码有什么区别:
render() {
return this.props.messages.map((message) => (
<Message
key={generateRandomNum()}
message={message}
/>
));
}
这里,键在呈现时总是生成随机数。两个版本都适用于我的应用程序。
另外,如果我有1000条消息,那么如果在消息数组中添加了一条额外的消息-this.props.messages
,是否所有消息都会重新提交当组件
收到新的道具
时,总是重新发布每条消息,这似乎是应用程序的一大负担。
试试这个:
render() {
const messages = this.props.messages.map((message, index) => (
<Message
key={`message-${index}`}
message={message}
/>
));
return (<div>{messages}</div>);
}
React组件必须呈现单个顶级元素(在本例中为div
)。使用map
索引还可以在数据更改时保持键的一致性,以防止它重新呈现所有内容。
它将在第二种情况下重新渲染,因为React检查组件的id,然后检查它们的状态/道具是否发生了变化。所以你最好使用第一种情况,因为id是一样的。
问题内容: 我有一个应用程序,需要动态设置元素的高度(让我们说“ app-content”)。它获取应用程序“ chrome”的高度,然后减去它的高度,然后将“ app- content”的高度设置为在这些限制内适合100%。这对于香草JS,jQuery或Backbone视图来说非常简单,但是我正在努力弄清楚在React中执行此操作的正确过程是什么? 以下是一个示例组件。我希望能够将的高度设置为窗
我希望每次只呈现数组中的三个元素。 每次我将单击em来更改数字。 例如:在屏幕上:123,我点击了在按钮,会出现456和以上。 MyCode:
我有一个组件,它获取作为道具的项目集合,并将它们映射到作为父组件的子组件呈现的组件集合。我们使用存储在WebSQL中的图像作为字节数组。在函数中,我从项中获取图像ID,并对进行异步调用,以获取图像的字节数组。我的问题是,我不能在React中传播这个promise,因为它不是为了处理渲染中的promise而设计的(至少我可以告诉你)。我来自一个背景,所以我想我正在寻找类似于关键字的东西来重新同步分支
我想显示从数组只有两个数据。数据是这样的: 0:名称:“jan”url:https://www.pet/event/imain5/" 1:名称:“willium”url:https://www.pet/event/imain6/" 2:名称:"petter"url:"https://www.pet/event/imain7/" 现在在我的代码中,它显示了从0到2的所有名称。 但我想显示前两个名称,
问题内容: 我已经实现了一个Modal组件,该组件在屏幕上显示一个模态对话框。通常,模态将有条件地显示。我可以通过两种方法在render函数中执行此操作: 在Modal组件中,我使用this.props.show为其自身添加了一个不同的类。如果为假,它将添加display:none以隐藏模式。 另一种方式是这样的: 这用于确定是否在渲染中添加Modal。 我想找出的是: 这两种方式有何不同? 其中
所以就像标题所说的,我的应用程序的主页因为某种原因渲染了两次,我不知道为什么。从我的浏览器路由器,我最初调用一个JS文件,从那里我调用我的HomePage组件和React路由器,但然后我的页面渲染两次,我不知道为什么。 我的浏览器路由器(index.js): 然后pp.js被称为: 然后我的主页组件(index.jsx): 和路线。js: 但是我的页面是这样渲染的: 我真的很困惑,所以任何建议都会