这是我的反应渲染功能 渲染:函数(){
return (
<div>
<p className="rr">something</p>
<style>
.rr{
color:red;
}
</style>
</div>
)
}
这给了我这个错误 &#34; JSX:错误:解析错误:第22行:意外的令牌:&#34;
这里有什么问题? 我可以将完整的普通css嵌入到反应组件中吗?
答案 0 :(得分:50)
使用es6模板字符串(允许换行)很容易。在你的渲染方法中:
const css = `
.my-element {
background-color: #f00;
}
`
return (
<div class="my-element">
<style>{css}</style>
some content
</div>
)
至于用例我正在为一个带有一些复选框的div执行此操作,我将其用于调试,我想在一个文件中包含以便以后轻松删除。
答案 1 :(得分:30)
JSX只是javascript的一个小扩展,它不是它自己的全面模板语言。所以你会像在javascript中那样做:
return (<div>
<p className="rr">something</p>
<style>{"\
.rr{\
color:red;\
}\
"}</style>
</div>)
然而,完全没有理由这样做。
答案 2 :(得分:21)
内联样式最好直接应用于组件JSX模板:
return (
<div>
<p style={{color: "red"}}>something</p>
</div>
);
DEMO:http://jsfiddle.net/chantastic/69z2wepo/329/
注意:JSX不支持样式属性的HTML语法
使用camelCase属性名称声明属性,例如,
{ color: "red", backgroundColor: "white" }
进一步阅读:http://facebook.github.io/react/tips/inline-styles.html
答案 3 :(得分:9)
“class”是JavaScript中的保留字。而是使用“className”。
此外,您必须记住您使用的是JSX,而不是HTML。我不相信jsx会解析你的标签。更好的方法是使用您的样式创建一个对象,然后将其应用为样式(见下文)。
var styles = {
color:"red";
}
return (
<div>
<p style={styles}>something</p>
</div>
)
答案 4 :(得分:5)
将变量添加到<style>
标记内的返回JSX。
renderPaypalButtonStyle() {
let styleCode = "#braintree-paypal-button { margin: 0 auto; }"
return (
<style>{ styleCode }</style>
)
}
答案 5 :(得分:4)
这可以通过使用反引号“`”来完成,如下所示
return (<div>
<p className="rr">something</p>
<style>{`
.rr{
color:red;
}
`}</style>
</div>)
答案 6 :(得分:1)
这就是我所做的:
render(){
var styleTagStringContent =
".rr {"+
"color:red"+
"}";
return (
<style type="text/css">
{styleTagStringContent}
</style>
);
答案 7 :(得分:0)
import styled from 'styled-components;
return (
<div>
<Test>something</Test>
</div>
)
下一步:
const Test = styled.p`
color: red
`;