【问题标题】:onChange the textbox value is not updating in HTML form using ReactonChange 文本框值未使用 React 以 HTML 形式更新
【发布时间】:2020-05-14 22:24:13
【问题描述】:

用户名和密码更改事件被调用,但它没有出现在 UI 文本框中。代码如下:

class Login extends Component{
constructor(props){
    super(props)
    this.state= {
        username: 'username',
        password: 'password'
    }

}

handleUsernameChange = (event) => {
    console.log(event.target.value);
    this.setState = ({
        username: event.target.value
    });
}

handlePasswordChange = (event) => {
    this.setState = ({
        password: event.target.value
    })
}

render(){
    return(
        <div>
            User Name: <input type="text" name="username" value={this.state.username} onChange={this.handleUsernameChange}></input>
            Password: <input type="password" name="password" value={this.state.username} onChange={this.handlePasswordChange} />
            <button>Login</button>
        </div>
    )
}
}
export default Login

控制台正在记录更新的用户名,但我无法在 UI 中看到它。如果我遗漏了什么,请告诉我。提前致谢。

【问题讨论】:

    标签: html reactjs forms events


    【解决方案1】:

    好的,所以您在这里遇到了几个问题。第一个是您通过尝试将其分配给某个值而错误地调用了“this.state”方法。所以你应该把this.setState = ({})改成this.setState({})

    第二个是您将 this.state.username 的值两次分配给两个输入,而不是为相应的输入分配正确的值。

    最后一个错误,也是一个棘手的错误,是您错误地将函数分配给 onChange 事件。如果您分配的函数没有对类对象实例的任何引用,那就没问题了。但是由于您的函数具有对实例的引用(引用是关键字“this”,它引用了调用函数的类的实例),您需要将函数绑定到对象,以便在调用函数时, 'this' 关键字知道您要将状态更改为哪个对象。所以你必须把onChange={this.handleUsernameChange}改成onChange={this.handleUsernameChange.bind(this)}

    【讨论】:

    • 感谢@Ignacio 的帮助。只需更新 setState 即可。关于您上次的错误分析,我对 React 很陌生,但我认为如果您使用箭头函数,它会将自身绑定到对象。
    • 你完全正确!没想到是箭头函数!
    【解决方案2】:

    this.setState = ({ 更改为this.setState({

    this.setState({
        username: event.target.value
    })
    

    并将密码输入值从value={this.state.username}更改为value={this.state.password}

    【讨论】:

    • 感谢@Sajib Khan,它成功了。这是一个愚蠢的错误。我对 React 很陌生!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2020-08-08
    • 2020-09-02
    • 1970-01-01
    • 2018-11-30
    • 2020-04-30
    相关资源
    最近更新 更多