javascript - 为什么渲染的图标不响应状态的变化?

标签 javascript reactjs semantic-ui semantic-ui-react

我正在尝试实现切换表单密码输入的基本功能。很简单,我希望用户在输入密码时隐藏或显示密码。

我正在使用 React,Semantic UI React 作为 CSS 框架。这是一项相当简单的任务,但我遇到了图标元素无法对状态变化使用react的问题。准确地说,图标对应的 CSS 类按预期从 eye 更改为 eyelash。然而,渲染的图标不会对这种状态变化使用react,并且保持不变,即眼睛而不是斜眼。奇怪的是,该输入字段的 type 属性从 text 更改为 password,并呈现正确的输入形式(即隐藏或显示密码) 。那么,什么给出了呢?

下面是组件的代码片段。我还提供了渲染表单的图像,并填充了相关字段。

更改密码表单

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { Form, Icon, Input } from 'semantic-ui-react';

const styles = {
  //...
};

class PasswordField extends Component {
  state = {
    showPassword: false,
  };

  onTogglePassword = () =>
    this.setState(prevState => ({
      showPassword: !prevState.showPassword,
    }));

  render() {
    const { showPassword } = this.state;
    const { name, value, label, onChange } = this.props;

    return (
      <Form.Field style={styles.formField}>
        <label style={styles.label}>{label}</label>
        <Input
          style={styles.input}
          type={showPassword ? 'text' : 'password'}
          name={name}
          value={value}
          onChange={onChange}
          icon={
            <Icon
              name={showPassword ? 'eye slash' : 'eye'}
              link
              onClick={this.onTogglePassword}
            />
          }
        />
      </Form.Field>
    );
  }
}

PasswordField.propTypes = {
    //...
}

export default PasswordField;

渲染表单的图像

enter image description here

最佳答案

它们实际上响应状态变化,问题出在斜线眼睛图标上!

您可以使用不同的图标名称来测试,而不是斜线,它应该可以工作。示例:

name={showPassword ? 'chevron circle down' : 'eye'}

关于javascript - 为什么渲染的图标不响应状态的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52282052/

相关文章:

javascript - 通过链接或按钮将传单 map 置于标记的中心

javascript - 使用 html 将新的 li html 附加到页面时无法准确获取 li 标签的高度

javascript - 为列表中的每个对象进行 api 调用

css - 修复了 react-semantic-ui 中的侧边栏

javascript - ReactJS 编译失败 : 'Objects' is not defined no-undef

javascript - 为什么{}.toString可以检查数据类型?

javascript - 如何在react js中使用 anchor 标记进行注销

javascript - 使用 redux-form 错误呈现时创建可关闭的 Bootstrap v3 警报

javascript - 语义 UI toast 通知重叠问题

javascript - 语义 UI 菜单中的转换和 onClick 操作不起作用