注释从这开始~
总览
在React中,当咱们为元素的style
属性传递字符串时,会产生"Style prop value must be an object"正告。为了解决该正告,应用从属性到值的映射。比如说,style={{paddingLeft: '15px'}}
。
这里有个例子来展现谬误是如何产生的。
// App.jsconst App = () => { // ⛔️ Style prop value must be an object eslint(react/style-prop-object) return ( <div> <h1 style="margin-left: 4rem">Hello world</h1> </div> );};export default App;
映射
上述代码的问题在于,咱们为h1
元素的style
属性传递了字符串。相同,style
属性应该传递从属性到值的映射。
const App = () => { return ( <div> <h1 style={{ marginLeft: '4rem', fontSize: '20px', padding: '20px', backgroundColor: 'salmon', color: 'white', }} > Hello world </h1> </div> );};export default App;
须要留神的是,这里咱们应用了2对大括号。外侧的大括号是对一个表达式的求值,内侧的大括号是蕴含属性名称和值的对象。
你还能够应用逻辑来计算特定的值。
const App = () => { return ( <div> <h1 style={{ marginLeft: 2 + 2 + 'rem', fontSize: Math.random() > 0.5 ? '20px' : '40px', padding: '20px', backgroundColor: 'salmon', color: 'white', }} > Hello world </h1> </div> );};export default App;
提取
你也能够将蕴含属性和值的对象提取到一个变量中。
const App = () => { const h1Styles = { marginLeft: 2 + 2 + 'rem', fontSize: Math.random() > 0.5 ? '20px' : '40px', padding: '20px', backgroundColor: 'salmon', color: 'white', }; return ( <div> <h1 style={h1Styles}>Hello world</h1> </div> );};export default App;
须要留神的是,CSS属性的命名必须是驼峰式。另一种办法是将你的CSS写在一个以.css
为扩展名的文件中,并应用className
属性来为你的元素申明款式。
上面是咱们如何将h1
元素的款式移到一个名为App.css
的文件中的一个类中。
.my-h1 { margin-left: 4rem; font-size: 20px; padding: 20px; background-color: salmon; color: white;}
而后,咱们能够导入该css
文件,并应用my-h1
类。
import './App.css';const App = () => { return ( <div> <h1 className="my-h1">Hello world</h1> </div> );};export default App;
这是对内联款式的一种代替。须要留神的是,这个属性被称为className
而不是class
。起因是:class
是JavaScript中的一个保留词。class
关键字是用来申明ES6类的。