为了账号安全,请及时绑定邮箱和手机立即绑定

在 React.js 中设置组件状态时遇到问题

在 React.js 中设置组件状态时遇到问题

拉风的咖菲猫 2021-09-04 21:11:26
我有一个word最初设置为visitor. 该页面有一个 H1,上面写着"Hello, {this.state.word}"。页面上有一个输入,将 的状态更改word为输入的值。我想要发生的是,当用户更改Word使用输入的状态时,能够将状态设置回它的原始单词,visitor只需按退格键直到页面输入为空。我尝试在onChange()函数内部使用条件逻辑来说明如果word状态等于空字符串,则将状态设置word为visitor。由于某种我无法弄清楚的原因,这不起作用。import React, {Component} from 'react';import "./Visitor.css";class Visitor extends Component{  constructor(props){    super(props);    this.state={      word: 'visitor'    };    this.handleChange = this.handleChange.bind(this);  }  handleChange(e){    if(this.state.word === ''){      this.setState({        word: 'vis'      });  }    this.setState({      [e.target.name]: e.target.value    });  }  render(){    return(      <div className="Visitor">          <h1>Hello, {this.state.word}</h1>          <input type="text"          onChange={this.handleChange}          name="word"          placeholder="Type your name here"/>          <button>Clear</button>      </div>    )  }}export default Visitor;我的 try 和 failed if 语句没有错误消息,只是没有正确的结果。结果应该是在任何时候页面上的输入都是空的,“word”的状态应该是“visitor”。
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

看起来你想签到e.target.value === ''而不是this.state.word在handleChange


编辑:您还需要避免用第二个 setState 覆盖您的第一个 setState,因此您最终的 handleChange 应该看起来像这样


handleChange = e => {

  if (e.target.value === '') {

    // handle if empty

    this.setState({ word: 'vis' });

  } else {

    // business as usual

    this.setState({ word: e.target.value });

  }

};


查看完整回答
反对 回复 2021-09-04
  • 2 回答
  • 0 关注
  • 183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信