简体   繁体   English

react中的onClick函数不适用于条件句

[英]onClick function in react does`t work with conditionals

I have a question about why does not the "onClick" function work? 我对“ onClick”功能为什么不起作用有疑问? It will only receive "You are not old enough!", when i hit the button. 当我按下按钮时,它只会收到“您还不够大!”。 I use a input field. 我使用输入字段。

import React, { Component } from 'react';



class App extends Component {
   constructor() {
    super();
     this.state= {
      term: 'write a number'
      }
     this.change = this.change.bind(this);
    }

   change = (event) => {
    this.setState({term: event.target.value >= 18 ? <p>You are old enough! 
  </p> : <p>You are not old enough!</p>});
  }

   render() {

     return (
       <div style={{textAlign : "center"}}>
       <input type="text"></input><br></br>
        <p>Result</p><br></br>
        {this.state.term}
        <button type="submit" onClick={this.change}>Submit</button>
      </div>
    );
  }
}

export default App;

If you want to validate the input on click, store the value of the input in state. 如果要在单击时验证输入,请以状态存储输入的值。

class App extends Component {
  constructor() {
    super();
    this.state = {
      term: 'write a number',
      value: ''
    };
  }

  handleChange = event => {
    this.setState({
      value: event.target.value
    });
  };

  validate = () => {
    this.setState({
      term:
        parseInt(this.state.value) >= 18
          ? 'You are old enough!'
          : 'You are not old enough!'
    });
  };

  render() {
    return (
      <div style={{ textAlign: 'center' }}>
        <input
          type="text"
          onChange={this.handleChange}
          value={this.state.value}
        />
        <br />
        <p>Result</p>
        <br />
        <p>{this.state.term}</p>
        <button type="submit" onClick={this.validate}>
          Submit
        </button>
      </div>
    );
  }

}

You can create a handler for the input and when you click in the button you get the value from the state. 您可以为输入创建处理程序,然后单击按钮从状态中获取值。 Check it out my approach. 看看我的方法。

class App extends React.Component { state = { age: null, term: 'write a number' } 应用程序类扩展了React.Component {state = {age:null,term:'write a number'}

onClick = () => {
    if(this.state.age) {
        const output = this.state.age >= 18 ? 
            <p>You are old enough!</p> :
            <p>You are not old enough!</p>
    this.setState({
        term: output
    });
}

onInputHandler = (event) => {
    this.setState({age: event.target.value})
}

render() {
    return (
        <div style={{textAlign : "center"}}>
            <input type="text" onChange={e => this.onInputHandler(e)}></input><br></br>
        <p>Result</p><br></br>
        <button onClick={this.onClick}>Submit</button>
        </div>);
}

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM