我正在尝试使用MJML电子邮件库在React中创建一封电子邮件。当我渲染1的时候,它不能正确地显示在网页上,因为我需要它们有不同的大小。
当我尝试将元素包装在一个数组中时,return变成null,去掉其中的一个部分,它就会返回。
任何帮助都将不胜感激,以下是代码。
render() {
const { mjAttribute } = this.props
const content = [this.renderEmailOverhead()]
const innerContent = [this.renderEmailBanner(), this.renderEmailTitle(), this.renderEmailText(), this.renderEmailDivider]
return ([
<Section full-width='full-width' padding-top="0">
{ content }
</Section>,
<Section>
{ innerContent }
</Section>
])
}发布于 2017-05-12 03:16:36
一个组件的render方法只能返回一个元素。因此,您必须将其包装在div中,正如扎尔戈德提到的那样。
请注意,MJML组件不仅仅是一个标准的React组件。
它有一些在React上下文中不可用的内部逻辑。您应该将MJML生成为标准的HTML元素,并使用renderToStaticMarkup呈现它,然后将其作为字符串传递给mjml2html函数,mjml将进行编译
return (
<mjml>
<mj-body>
<mj-container>
... // your sections goes here
</mj-container>
</mj-body>
</mjml>
)请注意,我不认为React是最适合这类工作的,我建议您使用更适合的模板语言,如八字胡/把手。
发布于 2017-05-12 03:04:07
您不能像那样将JSX与JavaScript混合使用...您可以这样做(您必须只有一个父/根元素)。
<div>
<Section full-width='full-width' padding-top="0">
{ content }
</Section>
<Section>
{ innerContent }
</Section>
</div>或者,如果出于某种原因坚持使用数组,也可以这样做:
renderSection(content, fullWidth){
return (
<Section
full-width={fullWidth ? 'full-width' : false}
style={{paddingTop: fullWidth ? 0 : 'auto'}}
>
{content}
</Section>
)
}
render(){
let contents = [content, innerContent]
return(
<div>
{contents.map(section, i => renderSection(section, i % 2 === 0))
</div>
)https://stackoverflow.com/questions/43923466
复制相似问题