通过单击按钮取消激活输入

问题描述 投票:10回答:3

我有这个基本组件,我希望只要我点击一个按钮就可以取消激活或激活文本字段。我怎样才能做到这一点?

这是我的示例代码:

import React from "react";
import Button from 'react-button'

const Typing = (props) => {
    var disabled = "disabled";
    var enabled = !disabled;

  const handleUserInput = (event) => props.onUserInput(event.target.value);
  const handleGameClik = (props) => {

      disabled = enabled;
  }
  return(
      <div>

          <input
              className = "typing-container"
              value = {props.currentInput}
              onChange = {handleUserInput}
              placeholder=" ^__^ "
              disabled = {disabled}/>
          <Button  onClick = {handleGameClik}> Start Game  </Button>
          <Button> Fetch Data </Button>

          </div>
          );
};
button input reactjs onclick components
3个回答
21
投票

使用state的简化解决方案可能如下所示:

class Typing extends React.Component {
  constructor(props) {
    super(props);
    this.state = { disabled: false }
  }
  handleGameClik() {
    this.setState( {disabled: !this.state.disabled} )
  } 
  render() {
    return(
        <div>
          <input
                className = "typing-container"
                placeholder= " type here "
                disabled = {(this.state.disabled)? "disabled" : ""}/>
          <button  onClick = {this.handleGameClik.bind(this)}> Start Game  </button>
          <button> Fetch Data </button>
        </div>
    );
  }
};

工作Codepen here


4
投票

** 2019 **

另一种选择是使用名为useState的react-hooks钩子。

import React, {useState} from 'react';

function Typing(props) {
  const [disabled, setDisabled] = useState(false);

  function handleGameClick() {
    setDisabled(!disabled);
  }

  return (
    <div>
      <input
        className='typing-container'
        placeholder=' type here '
        disabled={disabled}
      />
      <button type='submit' onClick={handleGameClick}> Start Game </button>
      <button> Fetch Data </button>
    </div>
  );
}

2
投票

这可能会使您感到困惑,但React.js的人员实际上重建了每个表单组件,使它们看起来几乎完全像本机HTML组件。但是有一些不同之处。

在HTML中,您应该禁用如下输入字段:

<input disabled="disabled" />

但是在React.js中你必须使用:

<input disabled={true} />

被接受的例子有效,因为任何不是qazxsw poi被认为是qazxsw poi。因此,0也被解释为true

© www.soinside.com 2019 - 2024. All rights reserved.