经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » React » 查看文章
解决React报错Style prop value must be an object
来源:jb51  时间:2022/12/5 8:48:38  对本文有异议

总览

在React中,当我们为元素的style 属性传递字符串时,会产生"Style prop value must be an object"警告。为了解决该警告,使用从属性到值的映射。比如说,style={{paddingLeft: '15px'}}

这里有个例子来展示错误是如何发生的。

  1. // App.js
  2. const App = () => {
  3. // ?? Style prop value must be an object eslint(react/style-prop-object)
  4. return (
  5. <div>
  6. <h1 style="margin-left: 4rem">Hello world</h1>
  7. </div>
  8. );
  9. };
  10. export default App;

映射

上述代码的问题在于,我们为h1元素的style属性传递了字符串。相反,style属性应该传递从属性到值的映射。

  1. const App = () => {
  2. return (
  3. <div>
  4. <h1
  5. style={{
  6. marginLeft: '4rem',
  7. fontSize: '20px',
  8. padding: '20px',
  9. backgroundColor: 'salmon',
  10. color: 'white',
  11. }}
  12. >
  13. Hello world
  14. </h1>
  15. </div>
  16. );
  17. };
  18. export default App;

需要注意的是,这里我们使用了2对大括号。外侧的大括号是对一个表达式的求值,内侧的大括号是包含属性名称和值的对象。

你还可以使用逻辑来计算特定的值。

  1. const App = () => {
  2. return (
  3. <div>
  4. <h1
  5. style={{
  6. marginLeft: 2 + 2 + 'rem',
  7. fontSize: Math.random() > 0.5 ? '20px' : '40px',
  8. padding: '20px',
  9. backgroundColor: 'salmon',
  10. color: 'white',
  11. }}
  12. >
  13. Hello world
  14. </h1>
  15. </div>
  16. );
  17. };
  18. export default App;

提取

你也可以将包含属性和值的对象提取到一个变量中。

  1. const App = () => {
  2. const h1Styles = {
  3. marginLeft: 2 + 2 + 'rem',
  4. fontSize: Math.random() > 0.5 ? '20px' : '40px',
  5. padding: '20px',
  6. backgroundColor: 'salmon',
  7. color: 'white',
  8. };
  9. return (
  10. <div>
  11. <h1 style={h1Styles}>Hello world</h1>
  12. </div>
  13. );
  14. };
  15. export default App;

需要注意的是,CSS属性的命名必须是驼峰式。另一种方法是将你的CSS写在一个以.css为扩展名的文件中,并使用className属性来为你的元素声明样式。

下面是我们如何将h1元素的样式移到一个名为App.css的文件中的一个类中。

  1. .my-h1 {
  2. margin-left: 4rem;
  3. font-size: 20px;
  4. padding: 20px;
  5. background-color: salmon;
  6. color: white;
  7. }

然后,我们可以导入该css文件,并使用my-h1类。

  1. import './App.css';
  2. const App = () => {
  3. return (
  4. <div>
  5. <h1 className="my-h1">Hello world</h1>
  6. </div>
  7. );
  8. };
  9. export default App;

这是对内联样式的一种替代。需要注意的是,这个属性被称为className而不是class。原因是:class是JavaScript中的一个保留词。class关键字是用来声明ES6类的。

以上就是解决React报错Style prop value must be an object的详细内容,更多关于React 报错Style prop object的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号