日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

React收集表單數(shù)據(jù)使用高階函數(shù)及非高階函數(shù)的使用

時間:2023-02-01 21:51:00 類型:React
字號:    
 /* 
                高階函數(shù): 如果一個函數(shù)符合下面2個規(guī)范中的任何一個,那該函數(shù)就是高階函數(shù)
                1. 若A函數(shù), 接收的參數(shù)是一個函數(shù), 那么A就可以稱之為高階函數(shù)
                2. 若A函數(shù), 調(diào)用的返回值依然是一個函數(shù),那么A就可以稱之為高階函數(shù)
                常見的高階函數(shù): Promise,setTimeout. arr.map() .....
                函數(shù)的柯里化: 通過函數(shù)調(diào)用繼續(xù)返回函數(shù)的方式,實現(xiàn)多次接收參數(shù)最后統(tǒng)一處理的函數(shù)編碼形式
            */
            //受控組件: 隨著值的改變,自動存儲到state中,需要用時,直接到this.state中取
            class Login extends React.Component{
                //初始化狀態(tài)
                state = {
                    username:'',
                    userpwd :''
                }
                //保存用戶名到狀態(tài)中
                //saveFormData的返回值依然是一個回調(diào)函數(shù):  高階函數(shù)  同時也是  函數(shù)的柯里化
                saveFormData = (dataType)=>{
                    console.log(dataType);
                    return (event)=>{ //event是React維護時幫我們生成一個參數(shù)對象
                        console.log(dataType,event.target.value);
                        this.setState({[dataType]:event.target.value})
                        //注意:在對象中讀取變量,必須用[]
                        //如: let a = "name"    const obj = {}  obj[a] = "小明"
                    }
                }
                handleSubmit = (event)=>{
                    event.preventDefault(); //阻止表單的提交事件  阻止默認(rèn)事件
                    const {username,userpwd} = this.state
                    console.log(`你的用戶名是:${username}, 密碼是: ${userpwd}`);
                }
                render(){
                    return (
                        <form action="http://tjegd.cn" onSubmit={this.handleSubmit}>
                           用戶名: <input onChange={this.saveFormData('username')} type="text" />
                           密碼:  <input  onChange={this.saveFormData('userpwd')} type="password" />
                           {/* onChange=  : 這里無論怎么寫,要保證返回值必須是一個回調(diào)函數(shù) */}
                           <button>登陸</button>
                        </form>
                    )
                }
            }
            ReactDOM.render(<Login/>,document.getElementById("test"));

非高階函數(shù)的使用

class Login extends React.Component{
                //初始化狀態(tài)
                state = {
                    username:'',
                    userpwd :''
                }
               
                saveFormData = (dataType,event)=>{
                        this.setState({[dataType]:event.target.value})
                }
                handleSubmit = (event)=>{
                    event.preventDefault(); //阻止表單的提交事件  阻止默認(rèn)事件
                    const {username,userpwd} = this.state
                    console.log(`你的用戶名是:${username}, 密碼是: ${userpwd}`);
                }
                render(){
                    return (
                        <form action="http://tjegd.cn" onSubmit={this.handleSubmit}>
                           用戶名: <input onChange={event=>this.saveFormData('username',event)} type="text" />
                           密碼:  <input  onChange={event=>this.saveFormData('userpwd',event)} type="password" />
                           {/* onChange=  : 這里無論怎么寫,要保證返回值必須是一個回調(diào)函數(shù) */}
                           <button>登陸</button>
                        </form>
                    )
                }
            }
            ReactDOM.render(<Login/>,document.getElementById("test"));


<