【问题标题】:How to use onchange,onclick,onkeypress in todo app in react js?如何在 React js 中的 todo 应用中使用 onchange、onclick、onkeypress?
【发布时间】:2019-02-02 17:32:17
【问题描述】:

我创建了一个待办事项应用程序,它运行良好。但是我想在按 Enter 时显示任务。 onclick 和 onchange 事件工作正常。还需要添加 onkeypress 事件。

import React, { Component } from 'react'


 class Todolist extends Component {

   constructor(props) {
     super(props)

     this.state = {

      userinput : "",

      list : [],

      title : " My simple todo app"
     }

   }

  /
   changeUserInput (input){

  this.setState({

    userinput : input
  })
   }

   addToList (input){

     const listArray = this.state.list

     listArray.push(input);

     this.setState ({

      list : listArray,

      userinput : "",
     })
   }



  render() {
    return (

      <div className="todolistmain">

      <h2 style={{color:"red"}} >{this.state.title}</h2>


     <input 


      onChange={(e)=>this.changeUserInput(e.target.value)}
      onKeyPress={e => {
        if (e.key === 'Enter') {
          this.changeUserInput()
        }
      }}
      value={this.state.userinput} type="text"
      placeholder="Enter task!!"/>


      <button style={{color:"blue"}} onClick={()=>this.addToList(this.state.userinput)}>New Task</button>

      <ul style={{color:"green"}}>
        {this.state.list.map((val)=><li>{val}</li>)}
      </ul>
      </div>
    )
  }
}
export default Todolist

【问题讨论】:

    标签: html reactjs


    【解决方案1】:

    使用密钥代码

      onKeyPress={e => {
        if (e.keyCode === 13) {
          this.changeUserInput()
        }
      }}
    

    class Todolist extends React.Component {
    
        constructor(props) {
            super(props)
    
            this.state = {
    
                userinput : "",
    
                list : [],
    
                title : " My simple todo app"
            }
    
        }
    
    
        changeUserInput (input){
    
            this.setState({
    
                userinput : input
            })
        }
    
        addToList (input){
    
            const listArray = this.state.list
    
            listArray.push(input);
    
            this.setState ({
    
                list : listArray,
    
                userinput : "",
            })
        }
    
    
    
        render() {
            return (
    
                <div className="todolistmain">
    
                    <h2 style={{color:"red"}} >{this.state.title}</h2>
    
    
                    <input
                        onChange={(e)=>this.changeUserInput(e.target.value)}
                        onKeyDown={e => {
                            if (e.keyCode === 13) {
                                this.addToList(this.state.userinput)
                            }
                        }}
                        value={this.state.userinput} type="text"
                        placeholder="Enter task!!"/>
    
    
                    <button style={{color:"blue"}} onClick={()=>this.addToList(this.state.userinput)}>New Task</button>
    
                    <ul style={{color:"green"}}>
                        {this.state.list.map((val)=><li>{val}</li>)}
                    </ul>
                </div>
            )
        }
    }
    
    
    ReactDOM.render(<Todolist/> , document.getElementById('root'))
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
    <div id='root'>
    
    </div>

    【讨论】:

    • 我已经添加了您给定的代码。但仍然无法正常工作。你能编辑我的代码吗?我是编码初学者
    • 使用 onKeyDown 代替
    • 更新答案检查sn-p
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2021-01-03
    • 2021-02-02
    • 2020-11-29
    相关资源
    最近更新 更多