2017-10-13 44 views
2

我只是沒有看到它明確React docs for Lists and Keys中提到。在使用React中的列表和鍵時,Keys可以包含空格/空格嗎?

我的直覺是要像對待HTML ID屬性 - 安全,其中HTML5 spec說:

值不能包含任何空格字符

...也MDN docs

我擔心最壞的情況可能是鍵,如ice boxice creamice cold可能會意外地得到化作ice三個按鍵,這顯然不是我們想要的。我知道這不是HTML。最具體的提及是在列表和鍵文檔頁面中說

選擇鍵的最佳方法是使用一個字符串來唯一標識其兄弟中的列表項。

那麼,是不是安全使用任何「唯一字符串」,包括空格?

我知道獨特的項目ID是最好的,但在我的具體使用情況下,我沒有這樣的事情,也沒有一個slug /安全字符串。這源於討論在實際ID不可用時應該在多大程度上avoid using indexes as keys

+0

儘管如此,在許多情況下使用索引作爲鍵是安全的。 – Sulthan

+1

據我所知,密鑰可以包含任何字符。 React足夠聰明,可以處理空格或任何特殊字符。由於它僅使用鍵來標識對象,因此應將它們視爲黑盒子。只有錯誤的代碼不能處理空格。通常情況下,關鍵字在HTML中不會顯示,因此HTML規則絕對不適用。 – Sulthan

+0

@Sulthan您是否有理由將您的回覆作爲答案發布?根據自最初發布以來的其他反饋和觀察結果,我很樂意將其標記爲已接受。 –

回答

1

一般來說,React並不關心字符串中的字符是什麼,它不需要檢查。 React在檢查虛擬DOM中的唯一性時使用這些鍵,並且這些鍵不會出現在生成的HTML(更多)中。因此沒有HTML規則,尤其是不適用於id的HTML規則。

爲什麼HTML中的標識符不允許空格?原因可能是因爲它們在CSS中被用作#myIdentifier,那裏的空格會使意義變得模糊。