React inline style - style prop 需要从样式属性到值的映射,而不是字符串

IT技术 javascript css reactjs
2021-03-27 17:29:01

我正在尝试在我的 React 应用程序中设置内联样式。在这种情况下,对于跨度:

<span className="myClass" style={{float : 'left', paddingRight : '5px'}} > </span>

react告诉我:

Uncaught Invariant Violation:styleprop 需要从样式属性到值的映射,而不是字符串。例如,在使用 JSX 时,style={{marginRight: spatial + 'em'}}。这个 DOM 节点是由 `SentenceView 渲染的

我不太确定这意味着什么。

PS:我尝试了不同的版本,所以我做得paddingRight: 5paddingRight: 5 + 'px'一样好paddingRight : 5px,但我没有成功!

6个回答

使用“ style s ”props代替样式

<span className="myClass" style={{float : 'left', paddingRight : '5px'}} > </span>

这是来自 W3Schools 的一个很好的参考,它也向您展示了如何创建带有样式信息的对象,并在 style 属性中引用它: 如何使用 CSS 设置 React 样式的参考

我将它标记为删除,因为它真的没有用,我是通过其他人对这篇文章的引用来到这里的,这绝对是错误的。惊讶地看到这篇文章有更高的票数。
2021-05-22 17:29:01
“样式不是有效的 jsx 属性”和我一样
2021-06-06 17:29:01
样式不是有效的 jsx 属性...这是如何解决的?
2021-06-07 17:29:01
@mohsinulhaq 你在使用 CSS module吗?如果是这样,那么您需要className={myStyles},而不是styles={myStyles}CSS Modules 自动将您的样式对象转换为 className 字符串。
2021-06-13 17:29:01
同意上面的评论,尝试过样式但它没有用,但如果我这样做了,“样式”就可以了。不知道为什么选择这个作为答案
2021-06-17 17:29:01

有一些方法可以为 React 组件设置样式。

https://facebook.github.io/react/docs/context.html

https://github.com/facebookincubator/create-react-app

  1. 使用style={css_object}style={{color: this.props.color}}

  2. 使用 className="your-class-name"

reactREPL

https://jscomplete.com/repl

1 样式对象

// <span style={styles}>

const styles = {
    color: "red",
    background: "#0f0",
    fontSize: "32px"
};

const BTN = (props) => {
    return (
        <div>
           My name is <button>{props.name}</button>
           <hr/>
           I'm <span style={styles}>{props.age}</span> yeas old!
        </div>
    );
};

const infos = {
    name: "xgqfrms",
    age: 23
};

ReactDOM.render(<BTN {...infos} />, mountNode);




// <span style={{color: styles.color}}>

const styles = {
    color: "red",
    background: "#0f0",
    fontSize: "32px"
};

const BTN = (props) => {
    return (
        <div>
           My name is <button>{props.name}</button>
           <hr/>
           I'm <span style={{color: styles.color}}>{props.age}</span> yeas old!
        </div>
    );
};

const infos = {
    name: "xgqfrms",
    age: 23
};

ReactDOM.render(<BTN {...infos} />, mountNode);

2 class名称 & stylesheet.css

import './styles.css';

/*
.classname-color{
    color: "red";
    background: "#0f0";
}
*/


const BTN = (props) => {
    return (
        <div>
            My name is <button>{props.name}</button>
            <hr/>
            I'm <span className="classname-color">{props.age}</span> yeas old!
        </div>
    );
};

const infos = {
    name: "xgqfrms",
    age: 23
};

ReactDOM.render(<BTN {...infos} />, mountNode);
.classname-color{
    color: "red";
    background: "#0f0";
}

JSX 和 HTML 是不同的。请参阅Udemy 的下图JSX 和 HTML 的区别

在 HTML 中它是

<div style="background-color: red;"></div>

在 JSX 中你写

<div style={{ backgroundColor: 'red' }}></div>

两者的条件内联格式都不同。

图形是你自己做的吗?如果没有,请分享您的来源!
2021-05-25 17:29:01
图形来自 udemy 课程:udemy.com/course/react-redux/learn/lecture/12531454#overview 作者:stephan Grinder
2021-06-16 17:29:01

这就是如何定义和使用带有react的内联样式的方式。

/**
 * Style definitions.
 */
const STYLE = {
    infoColor: {
        color: 'green'
    },
    warningColor: {
        color: 'orange'
    },
    errorColor: {
        color: 'red'
    }
};

/**
 * Component
 */
class Welcome extends React.Component {

    /**
     * Rendering into the DOM.
     */
    render() {
        return (
            <div>
                <h2 style={STYLE.infoColor}>Welcome!</h2>
        )
    }
}
感谢您的回答。它使用我最熟悉的 React 类模型,因为我使用 create-react-app。
2021-05-27 17:29:01

不要将 {{}} 包裹在双引号或字符串中