表单数据收集

非受控组件

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<div id="app"></div>

<script src="https://unpkg.com/react@17/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@17/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script src="https://unpkg.com/prop-types@15.6/prop-types.min.js"></script>
<script type="text/babel">
    //创建组件
    class Login extends React.Component {
        handleSubmit = (event) => {
            event.preventDefault() //阻止表单提交
            const {username, password} = this
            alert(`你输入的用户名是:${username.value},你输入的密码是:${password.value}`)
        }

        render() {
            return (
                <form onSubmit={this.handleSubmit}>
                    用户名:<input ref={c => this.username = c} type="text" name="username"/>
                    密码:<input ref={c => this.password = c} type="password" name="password"/>
                    <button>登录</button>
                </form>
            )
        }
    }

    ReactDOM.render(<Login />, document.getElementById("app"))
</script>
</body>
</html>

受控组件(类似双向绑定)

优化:高阶函数柯里化

不用函数柯里化实现:箭头实现

最后更新于

这有帮助吗?