河北新亚建设集团网站,在招聘网站里做电话销售,网站显示iis7,做网站一年能赚多少钱一、介绍 本文将会基于react实现表单的功能#xff0c;包括表单提交和跳转、表单验证、动态表单元素、动态内容加载。
二、使用教程
1.表单提交功能
export default class FormSubmit extends React.PureComponent{state {name: }handleNameChange evt …一、介绍 本文将会基于react实现表单的功能包括表单提交和跳转、表单验证、动态表单元素、动态内容加载。
二、使用教程
1.表单提交功能
export default class FormSubmit extends React.PureComponent{state {name: }handleNameChange evt {this.setState({name: evt.target.value});}handleSubmit evt {evt.preventDefault(); // 阻止默认事件if (!this.state.name){this.setState({error: Name is required});return;}fetchUserList(this.state.name); }const {userState, fetchUserList} useFetchUserList();render(){return (form className comment-box onSubmit {this.handleSubmit}divlabelName:/label input value {this.state.name} onchange {this.handleNameChange}//div{userState.error spanuserstate.error/span}divbuttonSubmit/button/div/form{userState.data uluserState.data.map((user) liuser.name/li)/ul}/) }}
user-service.js
export const userFetchUserList () {const initialState {data:[], isLoading:false, error:null};// reducerfunction reducer(state, action){switch (action.type){case FETCH_USER_LIST_BEGIN:return (data:[action.res.data], isLoading: true, error:null);case FETCH_USER_LIST_SUCCESS:return (...state, isLoading: false, error:null);case FETCH_USER_LIST_ERROR:return (...state, isLoading: false, error:res.data.error);}}const [state, dispatch] useReducer(reducer, initialState);function fetchUserList(){dispatch({type: FETCH_USER_LIST_BEGIN}); const doRequest axios.get(http://www.user.com/user/list);doRequest.then(res {dispatch({type: FETCH_USER_LIST_BEGIN,data: res.data});},err {dispatch({type: FETCH_USER_LIST_ERROR,data: {error:err}});});}return {state, fetchUserList};
}
2.动态表单元素
a.定义meta
const formMeta {colon: true,columns:1,elements: [{key: userName,label: User name,tooltip: user name,widget: Input,required: true}]
}
b. 自定义表单组件
const CustomForm ({meta}) {function renderFormItem (item) {const { widget: WidgetComponent, key, label, tooltip, required } item;return (Form.Itemkey{key}label{span{label}{tooltip Tooltip title{tooltip}/Tooltip}/span}name{key}rules{[{ required, message: Please input your ${label}! }]}WidgetComponent placeholder{Please input your ${label}} //Form.Item); }const renderFormItems () {if (meta meta.elements) {return meta.elements.map((item) renderFormItem(item));}return null;}; return (Formform{form}namecustom_formonFinish{onFinish}initialValues{formData}labelCol{{ span: meta.columns }}wrapperCol{{ span: meta.columns }}{renderFormItems()}{{children}}Form.ItemButton typeprimary htmlTypesubmitSubmit/Button/Form.Item/Form);
} 3.表单元素验证 使用ant design框架