【问题标题】:How to keep custom attribute in styled component?如何在样式化组件中保留自定义属性?
【发布时间】:2020-01-30 23:17:05
【问题描述】:

我创建了一个带有自定义属性test 的简单样式组件,但是在渲染时,test 属性只是没有出现在 div dom 中,发生了什么?

const StyledDiv = styled.div<{
    test?: boolean;
}>`
    color:red;
`;
//in render function...
<StyledDiv test>it's just test</StyledDiv>

【问题讨论】:

    标签: styled-components


    【解决方案1】:

    在 React 中,布尔值未传递给 dom 元素意味着 testtest={true} 将不可用于 dom。它只支持stringnumberobject 三种类型,它会将它们转换为string,所以您需要做的就是将它也更改为test="",它会起作用。

    如果您希望访问组件中的 test 属性,您需要执行以下操作:

    const StyledDiv = styled.div`
        color: ${({test}) => test ? 'red' : 'blue'};
    `;
    

    【讨论】:

    • 如果我希望 test 出现在该 dom 上该怎么办。因为我有一个选择器可以通过该属性访问该 dom
    • 用它传递一个值 react 不支持类似这样的布尔值:test="" 可以。我也会改变我的答案。
    • dom 上还没有得到test,最终的dom 是这样的&lt;div class="sc-fzXfLO bJxAYn"&gt;it's just test&lt;/div&gt;。我想要的是&lt;div class="sc-fzXfLO bJxAYn" test=""&gt;it's just test&lt;/div&gt;。它看起来样式组件只保留HTMLAttributes,所以如果我使用data-test,它可以保留。
    猜你喜欢
    • 1970-01-01
    • 2010-09-26
    • 2019-11-17
    • 2022-06-23
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2019-10-18
    • 2022-07-13
    相关资源
    最近更新 更多