React报错Style prop value must be an object如何解决
本篇内容介绍了“React报错Style prop value must be an object如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
总览
在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> <h2 >Hello world</h2> </div> );};export default App;
映射
上述代码的问题在于,我们为h2
元素的style
属性传递了字符串。相反,style
属性应该传递从属性到值的映射。
const App = () => { return ( <div> <h2 style={{ marginLeft: '4rem', fontSize: '20px', padding: '20px', backgroundColor: 'salmon', color: 'white', }} > Hello world </h2> </div> );};export default App;
需要注意的是,这里我们使用了2对大括号。外侧的大括号是对一个表达式的求值,内侧的大括号是包含属性名称和值的对象。
你还可以使用逻辑来计算特定的值。
const App = () => { return ( <div> <h2 style={{ marginLeft: 2 + 2 + 'rem', fontSize: Math.random() > 0.5 ? '20px' : '40px', padding: '20px', backgroundColor: 'salmon', color: 'white', }} > Hello world </h2> </div> );};export default App;
提取
你也可以将包含属性和值的对象提取到一个变量中。
const App = () => { const h2Styles = { marginLeft: 2 + 2 + 'rem', fontSize: Math.random() > 0.5 ? '20px' : '40px', padding: '20px', backgroundColor: 'salmon', color: 'white', }; return ( <div> <h2 style={h2Styles}>Hello world</h2> </div> );};export default App;
需要注意的是,CSS属性的命名必须是驼峰式。另一种方法是将你的CSS写在一个以.css
为扩展名的文件中,并使用className
属性来为你的元素声明样式。
下面是我们如何将h2
元素的样式移到一个名为App.css
的文件中的一个类中。
.my-h2 { margin-left: 4rem; font-size: 20px; padding: 20px; background-color: salmon; color: white;}
然后,我们可以导入该css
文件,并使用my-h2
类。
import './App.css';const App = () => { return ( <div> <h2 className="my-h2">Hello world</h2> </div> );};export default App;
这是对内联样式的一种替代。需要注意的是,这个属性被称为className
而不是class
。原因是:class
是JavaScript中的一个保留词。class
关键字是用来声明ES6类的。
“React报错Style prop value must be an object如何解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341