当前位置 : 主页 > 网络编程 > JavaScript >

React特征学习之Form格式示例详解

来源:互联网 收集:自由互联 发布时间:2023-02-08
目录 Form 样式 React hook Form 样式 首先来看一个简单Form, 式样如下 import * as React from 'react';const LoginForm = () = { return ( form div // Notice: 这里要用htmlFor,相当于id label htmlFor="email"Email/label inp
目录
  • Form 样式
  • React hook

Form 样式

首先来看一个简单Form, 式样如下

import * as React from 'react';
const LoginForm = () => {
  return (
    <form>
      <div>
        // Notice: 这里要用htmlFor,相当于id  
        <label htmlFor="email">Email</label>
        <input id="email" type="text" />
      </div>
      <div>
        <label htmlFor="password">Password</label>
        <input id="password" type="password" />
      </div>
      <button>Submit</button>
    </form>
  );
};
export { LoginForm };

屏幕显示如下

若给以上Form加入用户输入, 可引入handleSubmit指令,并设置onSubmit事件触发,具体如下

(关于用户输入View => App单向数据流,可参考相关文章 - 学习React的特征(一) - 单向数据流 

import * as React from 'react';
const LoginForm = () => {
   // handleSubmit here
  const handleSubmit = (e) => {
    // preventDefault用于防止部分浏览器一些默认的不必要的行为
    event.preventDefault();
  };
  return (
    // onSubmit here
    <form onSubmit={handleSubmit}>
      <div>
        <label htmlFor="email">Email</label>
        <input id="email" type="text" />
      </div>
      <div>
        <label htmlFor="password">Password</label>
        <input id="password" type="password" />
      </div>
      <button type="submit">Submit</button>
    </form>
  );
};
export { LoginForm };

接着,进一步获取用户的输入, 可通过e.target.elements来抓取

import * as React from 'react';
const LoginForm = () => {
  const handleSubmit = (e) => {
    e.preventDefault();
    // 获取input elements 
    const email = e.target.elements.email.value;
    const password = e.target.elements.password.value;
    alert(email + ' ' + password);
  };
  return (
    <form onSubmit={handleSubmit}>
      <div>
        <label htmlFor="email">Email</label>
        <input id="email" type="text" />
      </div>
      <div>
        <label htmlFor="password">Password</label>
        <input id="password" type="password" />
      </div>
      <button type="submit">Submit</button>
    </form>
  );
};
export { LoginForm };

屏幕显示如下

点击Submit, 显示如下

React hook

或许用React hook更简洁优雅些 , 引入useState管理email, password状态

import * as React from 'react';
const LoginForm = () => {
  // Add hooks here
  const [email, setEmail] = React.useState('');
  const [password, setPassword] = React.useState('');
  const handleEmail = (e) => {
    setEmail(e.target.value);
  };
  const handlePassword = (e) => {
    setPassword(e.target.value);
  };
  const handleSubmit = (e) => {
    e.preventDefault();
    alert(email + ' ' + password);
  };
  return (
    <form onSubmit={handleSubmit}>
      <div>
        <label htmlFor="email">Email</label>
        <input
          id="email"
          type="text"
          value={email}
          onChange={handleEmail}
        />
      </div>
      <div>
        <label htmlFor="password">Password</label>
        <input
          id="password"
          type="password"
          value={password}
          onChange={handlePassword}
        />
      </div>
      <button type="submit">Submit</button>
    </form>
  );
};
export { LoginForm };

到这里一个React Form雏形基本完成,当然Form遇到的问题远不止这些, 后续会再进一步探讨Form数据管理,验证等方案

以上就是React特征学习之Form格式示例详解的详细内容,更多关于React特征Form格式的资料请关注易盾网络其它相关文章!

上一篇:羊了个羊通关脚本Vue node实现版本
下一篇:没有了
网友评论