zoukankan      html  css  js  c++  java
  • React 学习之 键盘事件 表单事件 事件对象以及React中的ref获取dom节点 、React实现类似Vue的双向数据绑定

    (一) 表单事件

      获取表单的值分四步

    1.  监听表单的改变事件                                                      onChange
    2.    在改变的事件里面获取表单输入的值 事件对象              event.target.value
    3.    把表单输入的值赋值给username                                   this.setState({})
    4.    点击按钮的时候获取 state里面的                                   username this.state.username

       注: 一定要注意this的绑定  建议采用箭头函数

    import React from 'react';
    
    class List extends React.Component {
        constructor(props) {
            super(props);
            this.state = { 
    
                username:''
             };
        }
        inputChange=()=>{
            /*
                获取dom节点
                    1、给元素定义ref属性
                        <input ref="username" />
                    2、通过this.refs.username 获取dom节点
            
            */
            let val=this.refs.username.value;
    
            this.setState({
                username:val
            })
    
        }
        
        getInput=()=>{
            alert(this.state.username);
        }
    
        render() {
            return (
                <div><input ref="username" onChange={this.inputChange}/> <button onClick={this.getInput}>获取input的值</button>
    
                </div>
            );
        }
    }
    
    export default List;

    (二) 键盘事件

    import React from 'react';
    
    class List extends React.Component {
        constructor(props) {
            super(props);
            this.state = { 
    
                username:''
             };
        }
    
        //键盘事件
        //keyCode  是js键盘按钮编号
        
        inputKeyUp=(e)=>{
            console.log(e.keyCode);
            if(e.keyCode==13){
                alert(e.target.value);
            }
        }
     
        inputonKeyDown=(e)=>{
            console.log(e.keyCode);
            if(e.keyCode==13){
                alert(e.target.value);
            }
        }
    
        render() {
            return (
                <div>
                    <h2>键盘事件</h2>
                    {/** onKeyUp 是按Enter 抬上来的时候触发
                         onKeyDown 是按Enter 按下去的触发
                    */}
    
                    <input onKeyUp={this.inputKeyUp}/>
    
                    <br /><br />
    
                    <input onKeyDown={this.inputonKeyDown}/>
                </div>
            );
        }
    }
    export default List;

    (三) React实现类似Vue的双向数据绑定

    1. 手动监听文本框的onChange事件
    2. 在onChange事件中拿到最新的值
    3. 调用this.setState 把最新的值同步到state中,state发生改变,页面重新进行渲染 实现了数据的双向绑定
    import React,{Component} from 'react';
    
    class Todolist extends Component {
        constructor(props) {
            super(props);
            this.state = { 
    
                username:"111"
            };
        }
        inputChange=(e)=>{
            this.setState({
    
                username:e.target.value
           // username : this.refs.txt.value 或者可以通过 refs 这样获取文本框中的值 }) } setUsername
    =()=>{ this.setState({ username:'李四' }) } render() { return ( <div> <h2>双向数据绑定</h2> {/* model改变影响View view改变反过来影响model */}
              //<input value = {this.state.username} onChange={this.inputChange} ref="txt"> 或者可以这样通过ref拿到 txt value中的值
    <input value={this.state.username} onChange={(e) => this.inputChange(e)}/> {/*view 改变 影响model */} <p> {this.state.username}</p> <button onClick={this.setUsername}>改变username的值</button> {/*model 改变影响view React自带 */} </div> ); } } export default Todolist;

        天亮以前说再见

  • 相关阅读:
    【ABAP系列】SAP LSMW(摘自官网)
    【ABAP系列】SAP ABAP POPUP弹出框自建内容
    【ABAP系列】SAP ABAP ALV中的TOP_OF_PAGE添加任意图标
    彻底关闭Windows Defender丨Win10
    word中怎样设置页码包含总页数
    10款流行的Markdown编辑器,总有一款适合你
    MyEclipse安装插件
    Eclipse集成SonarLint
    MyEclipse中阿里JAVA代码规范插件(P3C)的安装及使用
    详述 IntelliJ IDEA 插件的安装及使用方法
  • 原文地址:https://www.cnblogs.com/misscai/p/10394468.html
Copyright © 2011-2022 走看看