簡體   English   中英

為什么字符串道具不需要在 JSX 元素中使用花括號?

[英]Why doesn't a string prop need curly braces in a JSX element?

在 JSX 元素中,例如

<User name="Dave" age={34} />

我試圖理解為什么一個字符串只能被引用,而其他類型,例如數字或布爾值,必須用花括號括起來。 我已經閱讀了其他幾篇文章,我知道大括號評估一個表達式,然后將其作為道具傳遞 - 但我找不到字符串不必在大括號內的具體原因。

我應該只是接受它的工作方式還是有更深層次的理由來理解?

很難確切地說出為什么某些代碼會以特定方式出現,尤其是對於一個有這么多貢獻者的大型項目,但也許我們可以做出很好的猜測。

2017 年,ReactJS 和 JSX 的創造者 Jordan Walke 被問到“你是如何想到 React 的?” 他的回答涵蓋了很多要點,但只簡要列出了他對 ReactJS 的實際靈感……

*“我們自然希望將 UI 部署到 Web 瀏覽器,而當時,編譯為 JS 的環境還沒有現在那么成熟——我什至不認為源映射存在......

最后回答你的問題:是的,React 受到了許多其他技術的啟發,包括我們當時一直在使用的其他 UI 框架。 最重要的是,React 受到 ML 語言家族(包括 SML/OCaml)的啟發,它幫助我闡明了不變性的價值(無雙關語)。 (來源: Jordan Walke:Facebook 工程師 | React.js 和 Reason 的創建者。]

在 ReactJS 中,你的{}大括號表示一個表達式,而""引號表示一個字符串文字(來源: ReactJS.org:Introducing JSX 。但為什么兩者兼而有之?可能是為了使其具有通用的底層結構(HTML、XML)靈活被各種 JavaScript UI 框架使用,這些框架通常使用<element attribute="val" />形式的<element attribute="val" /> 。但我只是在信息有限的情況下進行猜測。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM