如何使用 Bootstrap 4 制作可重用的样式化组件
How to make resuable styled-components using Bootstrap4
我是 styled-components 的新手,我非常喜欢这个概念。但是,当我尝试重构具有样式组件的组件时,我目前面临一些困难。我有一张 bootstrap 卡片,我在其中编写了一些可重复使用的表单,例如文本输入和按钮。简化的 MyComponent.js 看起来像这样:
const StyledCard = styled.div`
background: #008080;
color: white;
border-radius: 5px;
border: solid #008080;
`;
render() {
return(
<StyledCard classname = "card">
<article className="card-body">
<ButtonForm
name=''
label=''
/>
<form>
<TextInput
name=""
label=""
/>
</form>
</article>
</StyledCard>
);
}
};
这工作正常,但是如果我想让 StyledCard 在单独的文件中重复使用(我们称之为 CardForm.js),它不会按预期工作。 CardForm.js:
const StyledCard = styled.div`
background: #008080;
color: white;
border-radius: 5px;
border: solid #008080;
`;
const CardForm = () => {
return (
<StyledCard className="card">
<article className="card-body">
</article>
</StyledCard>
);
};
export default CardForm
然后如果 CardForm 在 MyComponent.js 中被导入,就像这样:
import CardForm from '../Templates/Card';
render() {
return(
<CardForm>
<ButtonForm
name=''
label=''
/>
<form>
<TextInput
name=""
label=""
/>
</form>
</CardForm>
);
}
};
它不起作用意味着 CardForm
中的其他表单元素不会被渲染。我在这里做错了什么?
CardForm
试试这个。把 children 放在 article
里面。否则 children 将覆盖 article
。
const CardForm = ({children}) => (
<StyledCard className="card">
<article className="card-body">
{children}
</article>
</StyledCard>
)
我是 styled-components 的新手,我非常喜欢这个概念。但是,当我尝试重构具有样式组件的组件时,我目前面临一些困难。我有一张 bootstrap 卡片,我在其中编写了一些可重复使用的表单,例如文本输入和按钮。简化的 MyComponent.js 看起来像这样:
const StyledCard = styled.div`
background: #008080;
color: white;
border-radius: 5px;
border: solid #008080;
`;
render() {
return(
<StyledCard classname = "card">
<article className="card-body">
<ButtonForm
name=''
label=''
/>
<form>
<TextInput
name=""
label=""
/>
</form>
</article>
</StyledCard>
);
}
};
这工作正常,但是如果我想让 StyledCard 在单独的文件中重复使用(我们称之为 CardForm.js),它不会按预期工作。 CardForm.js:
const StyledCard = styled.div`
background: #008080;
color: white;
border-radius: 5px;
border: solid #008080;
`;
const CardForm = () => {
return (
<StyledCard className="card">
<article className="card-body">
</article>
</StyledCard>
);
};
export default CardForm
然后如果 CardForm 在 MyComponent.js 中被导入,就像这样:
import CardForm from '../Templates/Card';
render() {
return(
<CardForm>
<ButtonForm
name=''
label=''
/>
<form>
<TextInput
name=""
label=""
/>
</form>
</CardForm>
);
}
};
它不起作用意味着 CardForm
中的其他表单元素不会被渲染。我在这里做错了什么?
CardForm
试试这个。把 children 放在 article
里面。否则 children 将覆盖 article
。
const CardForm = ({children}) => (
<StyledCard className="card">
<article className="card-body">
{children}
</article>
</StyledCard>
)