我在React项目中使用样式组件.在浏览器中呈现组件时,会为它们分配一个随机生成的类名,例如:
<div class="sc-KSdffgy oPwefl">
这个类名不能帮助我识别出来自哪个组件<div>,那么有没有办法轻松完成这个?
Ps目前我正在为我的样式组件添加attrs,以便我可以在开发工具中识别它们,例如:
const Foo = styled.div.attrs({
'data-id': 'foo'
})`
...
`;
Run Code Online (Sandbox Code Playgroud)
mxs*_*tbr 18
这正是我们创建Babel插件的原因,在使用它时,您将获得包含您为组件命名的类名:
<div class="Sidebar__Button-KSdffgy oPwefl">
Run Code Online (Sandbox Code Playgroud)
最重要的是,我们也设置了displayName生成的组件,这意味着在您的React DevTools中,您将看到实际的组件名称,而不仅仅是<div>或<Styled(Component)>.
要使用Babel插件安装它,npm install --save-dev babel-plugin-styled-components然后将其添加到您的Babel配置:(例如在您的.babelrc)
plugins: ["styled-components"]
Run Code Online (Sandbox Code Playgroud)
而已!快乐的调试
请注意,如果您正在使用create-react-app,则无法更改Babel配置.我使用并建议react-app-rewired能够更改配置而无需弹出.我们还react-app-rewire-styled-components为您构建了自动集成样式组件Babel插件!
对于使用 create-react-app 的任何人,只需替换
import styled from "styled-components";
Run Code Online (Sandbox Code Playgroud)
到
import styled from "styled-components/macro";
Run Code Online (Sandbox Code Playgroud)
这将使您的样式组件类在其中包含其组件的名称。并且您只需查看它们的类名就可以知道哪些类引用了哪些组件;)
我正在考虑做同样的事情,并偶然发现以下内容作为 attrs 的替代方案:
const Section = styled.div`
background-color: #06183d;
color: white;
padding: 16px;
margin-top: 16px;
${breakpoint("md")`
border-radius: 5px;
`}
`
Section.defaultProps = {
"data-id": "Section"
}
Run Code Online (Sandbox Code Playgroud)
使用 React.Component 的defaultProps. 它使调用更加styled.div干净,并且在需要时应该更容易删除。
对于使用 的任何人create-react-app,另一种选择是使用样式化组件 babel 宏
npm install --save babel-plugin-macrosimport styled from 'styled-components/macro';而不是import styled from 'styled-components';您现在应该在开发工具中看到组件名称:
| 归档时间: |
|
| 查看次数: |
4220 次 |
| 最近记录: |