javascript - 为所有输入类型创建通用文本框

标签 javascript html reactjs

由于我是 React JS 的新手,我需要支持为所有输入类型创建一个通用文本框。 此外,我开发了文本框,但我需要在类型为密码时显示密码功能。 但是,目前,当我第一次点击时,我的显示密码元素会消失。

import React, { useState, useEffect } from 'react';
const TextBox=(props)=> {
const [type, setType] = useState('text');
const [placeholder, setPlaceholder] = useState('Text');
const [passValue, setPassValue] = useState();
useEffect(() => {
    setType(props.type);
    setPlaceholder(props.placeholder);
}, []);

const handleChange=(e)=>{
    setPassValue(e.target.value);
}

const showHide=(e)=>{
    e.preventDefault();
    e.stopPropagation();
    setType(type === 'input' ? 'password' : 'input') 
}

return (
    <div>
    <h1>{type}:{placeholder}</h1>
    <input type={type} placeholder={placeholder} onChange={handleChange}></input>
    {(type==='password', type=== 'input') && 
        <div>
            <p>This is Password</p>
                <span onClick={showHide}>{type === 'input' ? 'Hide' : 'Show'}</span>
        </div>
    }
    {(type==='text')&&<p>This is Text</p>}
    {(type==='email')&&<p>This is an Email</p>}
    </div>
);
}
export default TextBox;

我的 Prop 通过以下代码获取:

<TextBox type="password" placeholder="Enter your Password"/>

如何在左侧的输入文本中显示显示/隐藏,同时保留上面的代码?

<input class='container textContainer' type={type} placeholder={placeholder} onChange={handleChange} /> 
{(type==='password' || type=== 'input') && 
<span onClick={showHide}> 
    {type === 'input' ? 'Hide' : 'Show'} 
</span> }

最佳答案

将您的密码条件更改为以下代码

  {(type==='password' || type=== 'input') && 
  <div>
    <p>This is Password</p>
      <span onClick={showHide}>
        {type === 'input' ? 'Hide' : 'Show'}
      </span>
  </div>}

关于javascript - 为所有输入类型创建通用文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58006590/

相关文章:

javascript - jquery .css() 返回对象对象?

html - 模式背景元素的正确 HTML 角色和其他相关属性 (TypeScript React)

Javascript Highcharts v3.0.5 - 使用多个 Y 轴时如何隐藏 Y 轴标题

javascript - 无需身份验证即可使用 Youtube API

PHP 将格式化文本输入 MySQL

javascript - 在将视频上传到数据库之前,如何对 native expo进行压缩?

javascript - ReactJS:如何将类名应用于两个元素标签?

reactjs - 从 Electron 返回结果到 React

具有多个参数的 Javascript 过滤

javascript - innerHTML 添加的对象标签在 onload 时始终为 null