1. saveFormData = (key) => {
  2. console.log(key)
  3. }
  4. {/* 把saveFormDate作为回调函数给onChange调用 */}
  5. <input type="text" placeholder='请输入姓名' onChange={this.saveFormData}/>
  6. {/* 把saveFormDate的返回值作为onChange回调,因为没有返回值, 所以相当于把undefined给onChange作为回调, 所以不生效 */}
  7. <input type="text" placeholder='请输入姓名' onChange={this.saveFormData('userName')}/>

1. 举例

第一种方法:

  1. import React from 'react'
  2. class App extends React.Component {
  3. //初始化状态
  4. sate={
  5. userName:'',
  6. password:''
  7. }
  8. saveFormData = (event,key) => {
  9. this.setState({
  10. [key]:event.target.value
  11. })
  12. }
  13. login = (event) => {
  14. event.preventDefault() //阻止表单提交
  15. const {userName, password} = this.state;
  16. alert(`姓名:${userName},密码:${password}`)
  17. }
  18. render() {
  19. return (
  20. <form onSubmit={this.login}>
  21. <input type="text" placeholder='请输入姓名' onChange={ e => {this.saveFormData(e,'userName')}}/>
  22. <br />
  23. <input type="password" placeholder='请输入密码' onChange={ e => {this.saveFormData(e,'password')}}/>
  24. <br />
  25. <button >登录</button>
  26. </form>
  27. );
  28. }
  29. }
  30. export default App;

第二种写法:

  1. import React from 'react'
  2. class App extends React.Component {
  3. //初始化状态
  4. sate={
  5. userName:'',
  6. password:''
  7. }
  8. saveFormData = (event) => {
  9. const key = event.target.name;
  10. this.setState({
  11. [key]:event.target.value
  12. })
  13. }
  14. login = (event) => {
  15. event.preventDefault() //阻止表单提交
  16. const {userName, password} = this.state;
  17. alert(`姓名:${userName},密码:${password}`)
  18. }
  19. render() {
  20. return (
  21. <form onSubmit={this.login}>
  22. <input type="text" placeholder='请输入姓名' onChange={this.saveFormData} name='userName'/>
  23. <br />
  24. <input type="password" placeholder='请输入密码' onChange={this.saveFormData} name='password'/>
  25. <br />
  26. <button >登录</button>
  27. </form>
  28. );
  29. }
  30. }
  31. export default App;

第三种:

  1. import React from 'react'
  2. class App extends React.Component {
  3. //初始化状态
  4. sate={
  5. userName:'',
  6. password:''
  7. }
  8. saveFormData = (key) => {
  9. return (event) =>{
  10. this.setState({
  11. [key]:event.target.value
  12. })
  13. }
  14. }
  15. login = (event) => {
  16. event.preventDefault() //阻止表单提交
  17. const {userName, password} = this.state;
  18. alert(`姓名:${userName},密码:${password}`)
  19. }
  20. render() {
  21. return (
  22. <form onSubmit={this.login}>
  23. <input type="text" placeholder='请输入姓名' onChange={this.saveFormData('userName')}/>
  24. <br />
  25. <input type="password" placeholder='请输入密码' onChange={this.saveFormData('password')} />
  26. <br />
  27. <button >登录</button>
  28. </form>
  29. );
  30. }
  31. }
  32. export default App;

2. 高阶函数的概念:

高阶函数:如果一个函数符合下面2个规范中的任何一个,那么该函数就是高阶函数
若函数A: 接收的参数一个函数,那么函数A就可以称为高阶函数;
若函数A: 调用的返回值依然是一个函数, 那么函数A就可以称之为高阶函数;

  1. saveFormData = (key) => {
  2. return (event) =>{
  3. this.setState({
  4. [key]:event.target.value
  5. })
  6. }
  7. }

常见的高阶函数: :::success

  • Promise: new Promise((resave, reject) => {})
  • setTimeout: setTimeout(() => {}, 100)
  • 数组常用方法:map,find, filter… :::

    3. 函数柯里化:

    函数柯里化: 通过函数调用继续返回函数的方法, 实现多次接收参数最后统一处理的函数编写形式。
    比如一个add函数正常这样写:
    1. function add(a,b,c){
    2. return a + b + c;
    3. }
    4. console.log(add(1,2,3))
    函数柯里化这样写:
    1. function add(a){
    2. return (b) => {
    3. return (c) => {
    4. return a+b+c
    5. }
    6. }
    7. }
    8. console.log(add(1)(2)(3))
    ```javascript saveFormData = (key) => { return (event) =>{
    1. this.setState({
  1. [key]:event.target.value
  2. })
  3. }

} ```