当前位置: 首页 > 知识库问答 >
问题:

ReactJS-为什么我的输入栏的样式没有根据设置状态改变?

张建华
2023-03-14

我有一个带有输入字段的表单,我试图根据用户输入的有效性来更改它,但它不起作用。我忽略了什么?请看下面的代码。控制台日志都按需要命中...但没有更改

export default class GeneralInput extends React.Component {
constructor(props) {
super(props)

this.state = {
  placeholderCSS: this.props.styles.placeholder || {},
  inputCSS: this.props.styles.input || {}
}
}


 onPlaceholderClick = (event) => {
event.currentTarget.parentElement.querySelector('input').focus()

}

onInputBlur = (event) => {
console.log('onblur')
let inputInfo = event.target
let inputVal = event.target.value,
    { styles } = this.props,
    fontSize = styles.placeholder.fontSize || 10,
    top = styles.placeholder.top || 4
    console.log(inputInfo.id.toString())
    console.log(inputVal.split('').length)


if(inputInfo.id == 'zip' && inputVal.split('').length < 4){
  console.log('ziphit')
  return this.setState(state =>({
      ...state.inputCSS,
      border: '3px solid red'
    }))


} else if (inputInfo.id == 'zip' && inputVal.split('').length >= 4){
      return this.setState(state => ({
          ...state.inputCSS,
          border: '1px solid green'
        }))
    }
    console.log(this.state.inputCSS)
}

共有1个答案

越心水
2023-03-14

状态中的CSS嵌套更深一层:

this.setState(prevState => ({
  inputCSS: {
    ...prevState.inputCSS
    border: '3px solid red'
  }
}));

还要注意,我建议向元素添加一个类,并有条件地更改类,而不是使用状态管理样式。这样,样式和组件的分离会更干净。

 类似资料:
  • 我在iOS应用程序中实现了一个导航栏,我将淡色设置为白色,但在运行应用程序时,状态栏不跟随淡色,只是透明的(见图)。我的目标是状态栏有半透明的风格。 怎么解决这个问题?

  • 我正在尝试更改其中一个ViewController的状态栏样式。我把这个 在plist中将基于视图的状态栏设置为“是” 2. 还补充了这一点 [自设置需求状态栏外观更新] 它可以工作,也就是说,我可以看到字体颜色为白色,但过了一段时间,它又变回了以前的类型。。

  • 问题内容: 我正在使用Xcode 8.0 beta 4。 在以前的版本中,UIViewController具有设置状态栏样式的方法 但是,我发现它在Swift 3中变成了“只获取变量”。 如何提供在UIViewController中使用的样式? 问题答案: 这是iOS 7及更高版本的首选方法 在您的应用程序中,将设置为。 在每个视图控制器中覆盖 (Apple文档)。例如: 如果根据视图控制器内部发

  • 各位早上好,, 我刚完成React的培训,我想做一个项目来练习。首先,我只是在firebase数据库中发布数据。然后,我想使用钩子(useState和useEffect)获取数据并将其显示在react组件中。 问题是,在使用axios获取数据后,我最终陷入了经典的无限循环陷阱,但我不知道如何使用依赖性来阻止它。 请查找以下代码: 当我使用控制台日志类型时,数据是正确的。但当我控制台记录fetche

  • 所以现在我有一堆活动和片段,它们在或中有以下代码: 这将状态栏设置为具有渐变色的可绘制对象。这样做的问题是,我不喜欢将这些代码复制并粘贴到我拥有的每个活动和片段中。不仅如此,这不适用于我的,这是用户首次运行应用程序时启动的第一个活动。那么,将状态栏颜色设置为自定义渐变颜色的最佳方法是什么,以及也适用于启动的第一个活动的方法是什么?

  • 本文向大家介绍ReactJs设置css样式的方法,包括了ReactJs设置css样式的方法的使用技巧和注意事项,需要的朋友参考一下 前段时间看了React Native,但是感觉在安卓反面的开发并不成熟.有较多功能有待完善,而且自己在实际运用的过程中在一些模块上遇到了不晓得阻力,又苦于网上没有找到那么多资源.于是打算先放一段时间,还是回过头来看ReactJs吧. React颠覆了html的传统思维