我有一个样式化的组件,我试图将来自props的DATA-属性传递给它。(这是我们在堆栈溢出问题上的解决方案)
export const InlineEditReadViewErrorContainer = styled.div.attrs(props => ({
'data-cy': props.dataCy
}))`
border: 2px solid #de350b;
border-radius: 3px;
`;
这就是我在代码中使用这个样式化组件的方式
<InlineEditReadViewErrorContainer dataCy='blabla'>
{readView}
</InlineEditReadViewErrorContainer>
但这改变不了什么
4条答案
按热度按时间nr9pn0ug1#
我认为我们必须正确地使用在React中添加到组件的属性,如果只需要这些属性来设置组件的样式,则使用更多的属性。
我们应该使用尽可能多的原生属性,但不损害客户端在broser中显示的HTML中暴露的私有数据,因此:
*如果要使用data-attributes:
注意:我将使用最简单的方法,用布尔值给予一组属性,如第一个答案所述,例如:
***如果你想使用自定义的 prop ,而不是像第二条评论所描述的那样在DOM中显示它们,那么使用 transient prop **:
样品:
s71maibg2#
该属性应该已经被“传递”,因为它将显示在组件上,以便在Cypress中使用。如果您希望在内部使用它,也可以使用transient属性,如下所示
h5qlskok3#
这要简单得多。你可以在你使用样式化组件的地方直接传递数据属性,一切都会很好。
jxct1oxe4#
这可能与捆绑器有关,因为你应该能够直接将data属性传递给样式化组件。但是,如果你扩展一个现有组件,请注意你需要通过props传递它。这两种情况会将data属性附加到最终的HTML: