當我使用下面的JSX以編程方式設置內聯樣式時,將無法加載該頁面。我將代碼簡化爲一個簡單的例子來說明問題。即使我傳遞一個對象,React仍將內聯樣式屬性視爲字符串
const AboutPage =() => {
let buttonStyle = { color: 'red' };
return (
<div>
<input type="button" style="{buttonStyle}" value="Click Me" />
</div>
);
}
我得到這個錯誤在瀏覽器控制檯:
The style prop expects a mapping from style properties to values,
not a string. For example, style={{marginRight: spacing + 'em'}} when
using JSX.
這是我第一天的學習反應,JSX所以我一定是失去了一些東西明顯。但似乎我做的是正確的事情:我在花括號內放置了一個對象(不是字符串)。爲什麼React將它解釋爲一個字符串?
這實際上在這裏明確解釋:https://facebook.github.io/react/docs/dom-elements.html#style,在官方文檔中。 「谷歌反射」太強大,不能抵擋有時:) – 62mkv
很高興你知道這一點。您也可以在線聲明樣式,如下所示:'style = {{color:「red」}}'。請注意雙花括號。還要注意,通常用破折號(例如font-size,text-align等)編寫的css屬性是用駱駝大小寫的(例如fontSize,textAlign等)寫的。 – Chris
@ 62mkv - 是的,這是內聯樣式的文檔(我在發佈之前閱讀它),但這些文檔沒有幫助我,因爲我的錯誤更基礎:我沒有意識到JSX解析器不允許引用屬性應該被解釋爲JavaScript的值。我剛剛爲JSX文檔的相關部分(https://facebook.github.io/react/docs/introducing-jsx.html#specifying-attributes-with-jsx)創建了合併請求,以便更清楚地瞭解帶引號。 –