reactjs - 使用样式化组件根据值设置输入样式
问题描述
我正在使用styled-components设置React Bootstrap Form.control 元素的样式。
我正在尝试确定是否可以根据输入是否具有值来设置输入样式。
例如,如果没有值(只是占位符),我希望输入为灰色。如果该字段有一个值,它应该是白色的。
我尝试了以下几种变体,但无济于事:
background: ${props =>
props.value ? 'white' : `${props.theme.colors.greys.athens}`};
我也尝试过::placeholder
造型。这样做的问题是它只会设置输入字段的内部占位符部分的样式,因此字段的完整背景不是正确的背景颜色。
解决方案
您应该将输入值存储到状态中并检查它是否不为空,然后将其分配className
给emptyInput
类,否则将其分配给类。因此notEmptyInput
,在您的 css 文件中,您应该有两个类emptyInput
和notEmptyInput
. 这应该是这样的:
state={
inputValue:null
}
在 html 部分输入应如下:
<Input
className={this.state.inputValue?notEmptyInput:emptyInput}
onChange={(event)=>{this.setState({inputvalue:event.target.value})}}
/>
在 css 文件中,你应该有:
.emptyInput{
background-color:'gray'
}
.notEmptyInput{
background-color:'white'
}
推荐阅读
- pandas - 根据值从列中获取字符串?
- reactjs - 来自请求的 ReactJS 中的 JSON 数组映射
- css - 圆形图像上文本的 CSS 背景横幅
- c++ - 有没有办法在另一个函数中加入线程?(IE在它自己的范围之外)
- cognos - Report Studio 10.2.2:在值提示中显示不同的值
- javascript - Apollo 类型定义被忽略
- c# - 选择带有实体框架的表的最后一条记录
- powershell - 在 PowerShell 中批量重新排列和重命名文件名
- php - 更改 apache 文档根目录后的“警告:session_start() ...”
- c# - LINQ 查询返回 NULL ASP-NET-CORE MVC