React内联样式 - 样式prop期望从样式属性到值的映射,而不是字符串

时间:2017-04-12 09:46:45

标签: javascript css reactjs

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

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

React告诉我:

  

未捕获的不变违规:style道具需要映射   样式属性为值,而不是字符串。例如,   使用JSX时,style = {{marginRight:spacing +'em'}}。这个DOM节点   由`SentenceView

呈现

我不太清楚这意味着什么。

PS:我尝试过不同的版本,所以我paddingRight: 5以及paddingRight: 5 + 'px'以及paddingRight : 5px,但我没有取得任何成功!

6 个答案:

答案 0 :(得分:29)

使用“样式 s ”道具而不是样式

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

答案 1 :(得分:19)

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

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

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

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

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

  3. React REPL

    https://jscomplete.com/repl

    1 className&amp; stylesheet.css

    &#13;
    &#13;
    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);
    &#13;
    .classname-color{
        color: "red";
        background: "#0f0";
    }
    &#13;
    &#13;
    &#13;

    2 style Object

    &#13;
    &#13;
    // <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);
    &#13;
    &#13;
    &#13;

答案 2 :(得分:1)

这就是你如何使用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>
        )
    }
}

答案 3 :(得分:1)

不要将{{}}用双引号或字符串括起来

答案 4 :(得分:1)

JSX和HTML有所不同: Difference between JSX and HTML

在HTML中是

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

您在JSX中编写

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

有条件的内联格式在这两者中是不同的。

答案 5 :(得分:-1)

JSX和html是不同的东西,我们在jsx中添加内联css的语法略有不同,我建议仔细阅读整个文档以更好地理解 https://www.w3schools.com/react/react_css.asp