传递“key”参数以响应组件

IT技术 javascript reactjs
2021-05-21 15:33:14

我试图将名称为“ key的参数传递给react组件,但它不起作用。如果我使用“ keyy ”而不是“key”,那么它就起作用了。

对我来说,“key”似乎是一个受限制的关键字,我不能将它用作参数名称。

真的吗?

那是我的例子:

render() {
   <MyComponent key='apple'
                keyy='pear'>
}
3个回答

是的,这是真的,key 是一个受限制的关键字,不会作为props传播。


键用作 React 的提示,但它们不会传递给您的组件如果您的组件中需要相同的值,请将其作为具有不同名称的 prop 显式传递:

const content = posts.map((post) =>
  <Post
    key={post.id}
    id={post.id}
    title={post.title} />
);

在上面的例子中,Post 组件可以读取 props.id,但不能读取 props.key。

文档中阅读更多内容

Yeskey关键字是保留的,这是 React 用来标识 html 元素的,它应该是唯一的。它有助于提高性能。我们应该为每个孩子添加一个密钥。这样 React 可以处理最小的 DOM 更改。

来自 React 文档

键可帮助 React 识别哪些项目已更改、添加或删除。应为数组内的元素提供键,以赋予元素稳定的身份。数组中使用的键在它们的兄弟中应该是唯一的。但是,它们不需要是全局唯一的。键用作 React 的提示,但它们不会传递给您的组件。如果您的组件中需要相同的值,请将其作为具有不同名称的 prop 显式传递。

key 是保留字。

这里

键可帮助 React 识别哪些项目已更改、添加或删除。应该为数组内的元素提供键,以赋予元素一个稳定的身份:

选择键的最佳方法是使用一个字符串,该字符串在其兄弟项中唯一标识列表项。大多数情况下,您会使用数据中的 ID 作为键。

也很好,并解释了 React 使用key参数的原因,以及有什么好处。你会发现keyparam 是 React reconciliation algorithm的基石


除了keyparam之外,还有一些不应该使用的保留字,例如:

refdangerouslySetInnerHTML

dangerouslySetInnerHTML您使用后一个而不是 DOMinnerHTML

此处查看更多详细信息。