2017-01-30 74 views
8

我想傳遞一個名稱爲「」的參數給一個反應組件,它不起作用。如果我使用「keyy」而不是「key」,那麼它就起作用了。傳遞「鍵」參數來反應組件

在我看來,「關鍵」是一個受限制的關鍵字,我不能用它作爲參數的名稱。

這是真的嗎?

這是我的例子:

render() { 
    <MyComponent key='apple' 
       keyy='pear'> 
} 
+0

控制檯應該明確告訴你,當你使用保留屬性 – ComethTheNerd

回答

8

是的,這是真的,關鍵是有限制關鍵字,並沒有得到傳播作爲道具。


鍵作爲提示作出反應,但它們不會傳遞到你的組件。上述

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

隨着例子,郵政組件可以讀取props.id,而不是道具:如果您需要在您的組件相同的值,明確地把它作爲一個不同名稱的道具。鍵。

瞭解更多的docs

3

key關鍵字被保留,這是使用反應鑑定html元素,它應該是唯一的。它有助於提高性能。 我們應該爲每個孩子添加一把鑰匙。 這種方式React可以處理最小的DOM更改。

From React Docs

鍵幫助陣營識別哪些項目已經改變,添加或移除。應該給數組內的元素賦予元素一個穩定的標識。在陣列中使用的鍵在他們的兄弟姐妹中應該是唯一的。但是,他們不需要全球獨一無二。 Keys可以作爲React的提示,但不會傳遞給組件。如果您的組件需要相同的值,請將其明確傳遞爲具有不同名稱的道具。

0

key是保留字。

here

鍵幫助陣營識別哪些項目已經改變,添加或移除。鍵應該賦予數組內的元素以給元素一個穩定的標識:

選擇一個鍵的最好方法是使用一個字符串來唯一標識其兄弟中的列表項。大多數情況下,您會將數據中的ID用作關鍵字。

This也不錯,並解釋了爲什麼陣營使用key PARAM,什麼是德好處。您會發現key param是React 對帳算法的核心。


除了key PARAM很少有你不應該使用更多的保留字,如:

refdangerouslySetInnerHTML

後來一個dangerouslySetInnerHTML您使用,而不是DOM innerHTML

請登錄here瞭解更多詳情。