样式化的组件如何将宽度道具传递给组件

时间:2019-05-06 09:18:39

标签: javascript reactjs styled-components css-in-js

我是样式组件的新手。我想通过将道具传递到组件来设置输入宽度。 预期输出应为:

<Input width=30px> or <Input width=100%> 

这是我的组成部分:

import styled from "styled-components"

const UIInput = styled.input`
  padding: 5px;
  width: ${props => props.width ? width : 'auto'}
`

export default UIInput

1 个答案:

答案 0 :(得分:1)

在这个小片段${props => props.width ? width : 'auto'}中,您忘记了widthprops对象上。要解决它:

${props => props.width ? props.width : 'auto'}

您可以在下面看到我的工作示例:

const UIInput = styled.input`
  padding: 5px;
  width: ${props => props.width ? props.width : 'auto'}
`

ReactDOM.render(
  <div>
    <div>
      <p>300px</p>
      <UIInput width="300px" />
    </div>
    <div>
      <p>80%</p>
      <UIInput width="80%"/>
    </div>
  </div>,
  document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/styled-components/dist/styled-components.min.js"></script>

<div id="root"></div>