问题描述
我有一个 React 项目,它通过导入 .css 文件来使用 CSS 模块。例如import styles from "./styles/MyComponent.css";
我发现自己现在处于这样一种情况:组件接收自定义的 CSS 片段作为字符串,以响应对服务器的动态调用。
是否可以使用这个字符串(在运行时之前是未知的)并对其进行本质上与 import
在 webpack 编译时对 .css 文件所做的相同的事情?
例如:
import styles from "./styles/MyComponent.css";
//later on in component...
moreStyle = "a string containing valid CSS";
//do *something* here to moreStyle string to do whatever importing does to a file.
myJSX = (
<div className={styles.someClass}>
This div content is styled by someClass
</div>
<div className={moreStyle.someOtherClass}>
This div content needs to be styled by someOtherClass,but obvIoUsly this isn't working
</div>
);
解决方法
你可以试试这个:
import styles from "./styles/MyComponent.js";
myJSX = (
<div style={styles.someClass}>
This div content is styled by someClass
</div>
<div style={styles.someOtherClass}>
This div content needs to be styled by someOtherClass,but obviously this isn't working
</div>
);
考虑创建一个序列化对象。
// Filename: MyComponentStyle.js
//Example styles
export const styles = {
someClass: { height: 10 },someOtherClass: {
backgroundColor: 'red',}
};
React 不像典型的 HTML/CSS/JS 应用那样工作。需要注意的是 JSX 可能看起来像 HTML,但它不是 HTML。
在您的代码中,className 被定义为字符串,这是意料之中的,但是,本文档中可能没有引用 CSS。尝试 console.log 它,看看你得到了什么。
...
另一种可能的解决方案是简单地将您的样式放在同一个组件文件中。组件样式的常见设计选择是内联样式。这对于中大型项目尤其有用,因为在这些项目中管理文件会很困难。
有用的参考资料:
https://reactjs.org/docs/dom-elements.html#style
https://codeburst.io/4-four-ways-to-style-react-components-ac6f323da822