Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使普通函数仅在react中对单击的事件起作用?_Javascript_Reactjs - Fatal编程技术网

Javascript 如何使普通函数仅在react中对单击的事件起作用?

Javascript 如何使普通函数仅在react中对单击的事件起作用?,javascript,reactjs,Javascript,Reactjs,我有两个字段password和password。我想在每个字段上显示和隐藏密码,但单击一个字段的显示图标不应显示另一个字段的值。 我对这两个onClick处理程序都使用了公共函数。 我的领域是- <div className='form-group'> <input type={toggle ? 'text' : 'password'} place

我有两个字段password和password。我想在每个字段上显示和隐藏密码,但单击一个字段的显示图标不应显示另一个字段的值。 我对这两个onClick处理程序都使用了公共函数。 我的领域是-

              <div className='form-group'>
                <input
                  type={toggle ? 'text' : 'password'}
                  placeholder='Password'
                />
                <i class='fas fa-eye-slash' onClick={showPassword}></i>
              </div>
              <div className='form-group'>
                <input
                  type={toggle ? 'text' : 'password'}
                  placeholder='Retype Password'
                />
                <i class='fas fa-eye-slash' onClick={showPassword}></i>
              </div>
我的职能是-


执行此操作后,每当我单击一个字段显示图标时,都会显示两个字段的密码,反之亦然。

您可以使用不同的值,而不是true和false,在这种情况下,默认值为: (不是很干净,我也没试过,但有道理)

然后你把你在那一刻点击的内容传递给你的函数

  <div className='form-group'>
                <input
                  type={toggle === "password1" ? 'text' : 'password'}
                  placeholder='Password'
                />
                <i class='fas fa-eye-slash' onClick={showPassword("password1"}></i>
              </div>
              <div className='form-group'>
                <input
                  type={toggle === "password2" ? 'text' : 'password'}
                  placeholder='Retype Password'
                />
                <i class='fas fa-eye-slash' onClick={showPassword("password2"}></i>
              </div>



两个字段可能使用相同的状态?不太清楚问题出在哪里,但如果您应该在状态上分别使用每个字段的两个不同状态,请[或]创建两个状态来管理这两个字段状态。@AlfredoLipari我只想使用一个状态。始终为每个字段声明新状态是不可行的,特别是当您有大量类似字段时。@SarunUK您能告诉我如何实现您的第一个建议吗?创建了一个示例演示-
function showPassword() {
    setToggle(!toggle)
  }
 const [toggle, setToggle] = useState("password")

  <div className='form-group'>
                <input
                  type={toggle === "password1" ? 'text' : 'password'}
                  placeholder='Password'
                />
                <i class='fas fa-eye-slash' onClick={showPassword("password1"}></i>
              </div>
              <div className='form-group'>
                <input
                  type={toggle === "password2" ? 'text' : 'password'}
                  placeholder='Retype Password'
                />
                <i class='fas fa-eye-slash' onClick={showPassword("password2"}></i>
              </div>


function showPassword(text){
   
   text === "password1" ? "password1" : "password2"
    //if text is already the same restore the default value
   text === toogle && "password" 
    setToggle(text)
  }