07_react中收集表单的数据

1.受控组件

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>
    <div id="test"></div>
    <script type="text/javascript" src="../js/react.development.js"></script>
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <script type="text/javascript" src="../js/babel.min.js"></script>

    <script type="text/babel">

        class Login extends React.Component {
            // username = React.createRef()
            // password = React.createRef()

            //初始化状态
            state = {
                username: '',
                password: ''
            }
            //表单提交
            handleSubmit = () => {
                event.preventDefault()
                const { username, password } = this.state
                alert(`你输入的用户名是:${username}密码是:${password}`)
            }

            //保存用户名到状态中
            saveUsername = () => {
                console.log("@", event.target.value)
                this.setState({
                    username: event.target.value
                })
            }

            //保存密码到状态中
            savePassword = () => {
                this.setState({
                    password: event.target.value
                })
            }
            render() {
                return (
                    <form onSubmit={this.handleSubmit}>
                        用户名: <input onChange={this.saveUsername} type="text" name="username" />&nbsp;
                        密码:<input onChange={this.savePassword} type="password" name="password" />&nbsp;
                        <button >登录</button>
                    </form>
                )
            }
        }

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

</html>

2.非受控组件 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>

<body>
    <div id="test"></div>
    <script type="text/javascript" src="../js/react.development.js"></script>
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <script type="text/javascript" src="../js/babel.min.js"></script>

    <script type="text/babel">
        class Login extends React.Component {
            handSubmit = (/* event */) => {
                event.preventDefault()//阻止表单提交
                const{username,password} =this
                alert(`你输入的用户名是:${username.value},你输入的密码是:${password.value}`)
            }

            render() {
                return (
                    <form action="https://baidu.com" onSubmit={this.handSubmit}>
                        <div>
                            用户名: <input ref={(currentNode) => { this.username = currentNode }} type="text" name="username" />&nbsp;
                            密码: <input ref={currentNode => this.password = currentNode} type="password" name="password" />&nbsp;
                            <button>登录</button>
                        </div>
                    </form>

                )
            }
        }

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

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值