• React报错之Style prop value must be an object


    正文从这开始~

    总览

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

    style-prop-value-must-be-object.png

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

    // App.js
    const App = () => {
      // ⛔️ Style prop value must be an object eslint(react/style-prop-object)
      return (
        <div>
          <h1 style="margin-left: 4rem">Hello worldh1>
        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 worldh1>
        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 worldh1>
        div>
      );
    };
    
    export default App;
    

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

  • 相关阅读:
    Java 如何复制 List ?
    谷粒商城 (二十五) --------- 商品服务 API 平台属性 ② 销售属性与分组关联属性
    最简单的静态资源服务器(超级详细)
    Prometheus、Grafana安装-部署-监控linux
    【2023 · CANN训练营第一季】应用开发(初级)——第一章 AscendCL概述
    linux使用ros打开奥比中光astra相机,查看红外图像
    计量经济学复习
    java基础---NIO续---selecteor
    Elasticsearch系列教程之Elasticsearch Kibana Head等工具安装
    【Linux】自己实现一个bash进程
  • 原文地址:https://www.cnblogs.com/chuckQu/p/16570509.html