课react组件化设计与实现_第1页
课react组件化设计与实现_第2页
课react组件化设计与实现_第3页
课react组件化设计与实现_第4页
课react组件化设计与实现_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-State副作用钩子-EffectHookCustomHookContextHookContextHook是React16.8一个新增项,它可以让你在不编写class的情况下使用state以及其他的React状态钩子StateimportimportReact,{useState}fromexportdefaultfunctionHooksTest()useState(initialState),接收初始状态,返回一个状态变量和其更新函数const[count,setCount]=useState(0);return<p>Youclicked{count}}-EffectimportimportReact,{useState,useEffect}from"react";useEffect(()=>{//Update titleusingthebrowser.title`您点击了${count次-Custom其他Context相关constconstMyContext=constconst{Provider}=MyContext;exportdefaultfunctionApp()return<Providervalue={{foo:<Child}functionfunctionreturn}exportdefaultfunction{return<Providervalue={{foo:"bar"{value=><Child2}importimportReact,{Component}from//2.扩展表单的高阶组件,提供输入控件包装 functionkFormCreate(Comp)returnclass {constructor(props){this.optionsthis.state}handleChange=e=>let{name,value}=e.target;this.setState({[name]:value},()=>{//校验://validateField=field=>construles=this.options[field].rules;////只要有任何一项校验失败就返回trueconstret=!rules.some(rule=>if(rule.required)////[field+"Message"]:returntrue;//若有校验失败,返回}}//if(ret)this.setState({[field+"Message"]:""});returnret;//validate=cb=>//将选项中所有fieldconstrets=Object.keys(this.options).map(field{return//校验结果中每一项都要求constret=rets.every(v=>v==true);cb(ret,this.state);//返回包装输入控件的高阶组件 //field字段名,options选项, getFieldDec=(field,option)=>{this.options[field]=option; p=>({/*由React.createElement生成的元素不能修改,需要克隆一份再扩展 name:field,控件onChange:this.handleChange//控件 {this.state[field+"Message"]&&{return(}}classKFormTestextends{onSubmit=()=>{if(isValid)console.log("提交登录",}else}render()//const{getFieldDec}=ps;return({getFieldDec("uname",})(<inputtype="text"{getFieldDec("

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论