【问题标题】:ReactJS nested inline stylesReactJS 嵌套的内联样式
【发布时间】:2016-01-01 21:45:24
【问题描述】:

我在 ReactJS 中有一个名为 SearchBar 的组件

var SearchBar = React.createClass({
    render: function () {
        return (
            <div style={{width:'100%',position:'0',backgroundColor:'darkOrange'}}>
                <div style={[styles.dataBlock,styles.header]}>
                    <h1>MOVIE</h1>
                </div>
                <div styles={[styles.dataBlock,styles.searchForm]}>
                    <input style={[styles.dataBlock,styles.searchForm,styles.searchField]}
                        type="text" placeholder="Enter search term"/>
                </div>
            </div>
        );
    }
});

这里是styles

var styles = {
    dataBlock: {
        width: '100%',
        height: '100%',
        margin: '0 auto',
        fontFamily: 'Helvetica',
        textAlign: 'center'
    },
    header: {
        width: 'inherit',
        marginLeft: 'auto',
        marginRight: 'auto'
    },
    searchField: {
        width: 'inherit'
    },
    searchForm: {
        width: '90%',
        marginLeft: 'auto',
        marginRight: 'auto'
    }
};

样式似乎不起作用,表明input 文本表单没有width:90%,正如我在styles 中声明的那样。我想使用样式继承,以便在style 中放入一组内联样式。我这里有什么问题吗?如何在 ReactJS 中继承样式?

【问题讨论】:

标签: css inheritance nested reactjs components


【解决方案1】:

documentation

在 React 中,内联样式不指定为字符串。相反,他们 用一个对象指定,其键是驼峰式版本的 样式名称,其值为样式的值,通常为字符串

它明确指出style 需要是键值对的对象,而不是数组。背后没有魔法。样式对象可以用 vanilla JS 或一些实用程序库组成,如 lodashunderscore、jQuery,任何适合您项目的东西。

// Vanilla JS
<div style={ Object.assign( styles.dataBlock, styles.searchForm ) }> ...
// Lodash
<div style={ _.assign( styles.dataBlock, styles.searchForm ) }> ...

【讨论】:

  • 在 React 项目中,原版 Object.assign 可能比 $.extend 更常用。
  • 这个答案可以改进以帮助解决这个确切的问题。只需从文档中复制粘贴就会遗漏对原始问题的完整上下文有帮助的要点。
猜你喜欢
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 2016-11-15
  • 2014-02-27
  • 2017-10-21
  • 2016-09-23
  • 2014-05-08
  • 2016-12-09
相关资源
最近更新 更多