当前位置: 首页 > news >正文

怎么用vs2008做网站惠州自动seo

怎么用vs2008做网站,惠州自动seo,wordpress企业免费国人主题,下载微信找回微信表单是html的基础元素,接下来我会用React实现一个表单组件。支持包括输入状态管理,表单验证,错误信息展示,表单提交,动态表单元素等功能。 数据状态 表单元素的输入状态管理,可以基于react state 实现。 …

        表单是html的基础元素,接下来我会用React实现一个表单组件。支持包括输入状态管理,表单验证,错误信息展示,表单提交,动态表单元素等功能。

数据状态

        表单元素的输入状态管理,可以基于react state 实现。

const [formData, setFormData] = useState(initial_data);

 参数校验     

        在表单元素变更后,对变更结果进行验证,若验证失败,则更新失败状态,若验证成功,则更新数据状态, 并移除之前老的失败状态。

/*** 表单错误状态*/
const [errors, setErrors] = useState({});/*** 表单数据变更处理函数*/
const setFieldData = (name, value) => {// 进行参数校验if (validators && validators[name]) {const error = validators[name](value);if (error) {setErrors((errors) => ({...errors, [name]: error}));return;}setErrors((errors) => {const newErrors = {...errors};delete newErrors[name];return newErrors;})}// 更新表单数据setFormData({...formData,[name]: value});
}

表单提交

    表单提交需要判断是否有校验失败错误,如果有的话提交失败,如果没有提交成功。

/*** 表单提交处理函数*/
const handleSubmit = (e) => {e.preventDefault();if (errors && Object.keys(errors).length > 0) {console.log('表单校验未通过');return;}if (submitFunc) {console.log('开始执行提交函数');submitFunc(formData);}
}

表单项组件

        表单项组件会根据参数不同的类型返回不同的组件,并且error和fieldData,setFieldData与父组件Form绑定。

/*** 表单项组件*/
const FormItem = ({name, type, error, label, fieldData, setFieldData}) => {if (type === 'submit') {return (<div><input type="submit" value={label}/></div>)} else if (type === 'text') {return (<div><label htmlFor={name}>{label}</label><input type="text" name={name} value={fieldData} onChange={e => setFieldData(name, e.target.value)}/>{error && <span>{error}</span>}</div>)} else if (type === 'password') {return (<div><label htmlFor={name}>{label}</label><input type="password" name={name} value={fieldData}onChange={e => setFieldData(name, e.target.value)}/>{error && <span>{error}</span>}</div>)}return null;
}

组件整体代码

        Form组件是基于React实现,并对表单form的功能进行日常封装。

import {useState} from "react";/*** 表单组件* @param initial_data 初始数据* @param validators 校验器* @param submitFunc 提交函数* @param children FormItem组件列表*/
const Form = ({initial_data, validators, submitFunc, children}) => {/*** 表单数据状态*/const [formData, setFormData] = useState(initial_data);/*** 表单错误状态*/const [errors, setErrors] = useState({});/*** 表单数据变更处理函数*/const setFieldData = (name, value) => {// 进行参数校验if (validators && validators[name]) {const error = validators[name](value);if (error) {setErrors((errors) => ({...errors, [name]: error}));return;}setErrors((errors) => {const newErrors = {...errors};delete newErrors[name];return newErrors;})}// 更新表单数据setFormData({...formData,[name]: value});}/*** 表单提交处理函数*/const handleSubmit = (e) => {e.preventDefault();if (errors && Object.keys(errors).length > 0) {console.log('表单校验未通过');return;}if (submitFunc) {console.log('开始执行提交函数');submitFunc(formData);}}return (<><div><form onSubmit={handleSubmit}>{children.map((child, index) => {return (<FormItemkey={index}name={child.props.name}label={child.props.label}error={errors[child.props.name]}type={child.props.type}setFieldData={setFieldData}>{child}</FormItem>)})}</form></div></>)
}/*** 表单项组件*/
const FormItem = ({name, type, error, label, fieldData, setFieldData}) => {if (type === 'submit') {return (<div><input type="submit" value={label}/></div>)} else if (type === 'text') {return (<div><label htmlFor={name}>{label}</label><input type="text" name={name} value={fieldData} onChange={e => setFieldData(name, e.target.value)}/>{error && <span>{error}</span>}</div>)} else if (type === 'password') {return (<div><label htmlFor={name}>{label}</label><input type="password" name={name} value={fieldData}onChange={e => setFieldData(name, e.target.value)}/>{error && <span>{error}</span>}</div>)}return null;
}export {Form, FormItem};

使用样例

        效果图见下图,使用样例代码见下方代码。        

function App() {return (<div><Form submitFunc={(data) => console.log(data)} initial_data={{username: 'vicyor', password: '123456'}}validators={{password: (val) => {if (val.length < 6) {return '密码长度不能小于6';}}}}>< FormItem name="username" label="用户名" type='text'/><FormItem name="password" label="密码" type='password'/><FormItem name="submit" label="提交" type='submit'/></Form></div>);
}
http://www.15wanjia.com/news/48489.html

相关文章:

  • 临沂网站建设电话1688精品货源网站入口
  • 长沙营销型网站开发seo高效优化
  • 园林景观设计公司及高校人才培养建议廊坊网站seo
  • 网站注册人查询万能的搜索引擎
  • 网站备案需要多长时间青岛网站推广关键词
  • 网站首页设计代码收录是什么意思
  • 申请阿里巴巴网站首页企业营销策划有限公司
  • 网站开发后台需要哪些技术怎么制作百度网页
  • 过年做那个网站致富app投放渠道有哪些
  • app网站开发哪里有关键词搜索引擎工具爱站
  • 做网站挣钱打擦边球sem对seo的影响有哪些
  • 11108给换成119333做网站中国十大营销策划机构
  • 国外 网页框架搭建的网站外链平台
  • wordpress更改域名修改站内链接企业网站运营推广
  • 泰安网站制作工作室南昌seo
  • 哈尔滨大型网站建设电话利尔化学股票最新消息
  • 荆州松滋网站建设情感营销案例
  • WordPress中文标题不显示百度seo培训课程
  • asp企业网站自助建站系统免费版超漂亮版关键词搜索趋势
  • 网站建设微信运营公司企业网站优化推广
  • 什么网站能让小孩做算术题seo专家是什么意思
  • 手机上如何创建微信公众号seo薪酬水平
  • 濮阳网站制作关键词搜索引擎排名查询
  • 不会做网站能做网络销售吗百度网页版登录入口官网
  • 哪家房屋设计公司网站seo排名影响因素主要有
  • 北京首钢建设有限公司网站今天新疆新闻头条
  • nginx 一个独立ip 建立2个独立网站 2个域名百度关键词搜索排名
  • 四川网络推广seo营销培训
  • 外贸网站模板建设免费推广网站地址大全
  • 在家写代码可以赚钱吗营销型网站优化