【发布时间】:2021-01-25 18:15:54
【问题描述】:
我正在尝试将样式应用于从函数内部的 for 循环生成的标签。问题是标签中的样式不适用于这些生成的标签。可能是因为它们是在应用样式后生成的?我不知道。这是一个例子:
generateTags = (size) => {
let tags = []
for (var i = 0; i < size; i++) {
tags.push(<img className="image-tag" src={this.state.imagePath} alt="image" key={Math.random() * Math.floor(100000)}/>)
}
return tags
}
render() {
return (
<div className="main">
<div className="left-container">
{this.generateTags(10)}
</div>
<style jsx> {`
.main { <-- This is properly applied
position: relative;
width: 100%;
height: 100%;
}
.image-tag { <-- This doesn't work
position: absolute;
width: 50px;
}
`} </style>
</div>
)
}
宽度:50px 不适用于图像,我放置的任何内容都没有任何区别。但是当我像这样在标签中添加样式时:
<img className="image-tag" style={{width: "50px"}} src={this.state.imagePath} alt="image" key={Math.random() * Math.floor(100000)}/>
然后正确应用样式。这是否意味着如果元素是从函数返回的,我不能在样式标签中包含 css?
【问题讨论】:
-
您能否验证样式标签及其内容确实在输出页面上正确呈现?
-
为什么不将样式内联到主 div 和 img 标签
-
@Sujit.Warrier 我发现将通常格式的样式很好地嵌套在文件末尾会更具可读性。样式标签还确保样式不会应用于其他组件中存在的相同类名。
-
@NikosM。该样式仅在标签本身内联时应用。我立刻注意到了一个机会。当样式在 jsx 样式标签内时,没有效果。