今天分享一个简单又常用到的方法来处理表单,先举个新手进入React处理表单时常用到的例子:
// 使用useState来记录表单栏位讯息
const [nativeForm, setNativeForm] = useState({
user: '',
pwd: ''
})
// 定义onChange function
const nativeFormChange = e => setNativeForm({...nativeForm, [e.target.name]: e.target.value })
<!-- in return -->
<fieldset>
<legend>一般的useState</legend>
<div>
<label htmlFor="user">用户名</label>
<input
id="user"
name="user"
value={nativeForm.user}
onChange={nativeFormChange}
/>
</div>
<div>
<label htmlFor="pwd">密码</label>
<input
id="pwd"
name="pwd"
type="password"
value={nativeForm.pwd}
onChange={nativeFormChange}
/>
</div>
</fieldset>
按照上次讲的逻辑来做简化,所以一步一步来,现创一个新的.js,档案来整理这边的useState和onChange function:
// useForm.js
import { useState } from "react"
const useForm = (defaultValues) => {
// 先另立一个form state 的 object
const [state, setState] = useState(defaultValues || {});
// 基础的塞入方法,当input form 的 name 有对应到的时候就可改变该状态
const handleChange = e => {
setState(state => ({ ...state, [e.target.name]: e.target.value }));
}
// 回传form state && handleChange function
return [state, handleChange];
}
export default useForm;
接着,回到原本的component里面做修改:
// 改为引入刚刚做好的useForm
const [nativeForm, nativeFormChange] = useForm({
user: '',
pwd: ''
})
稍微修改一下新的function命名
<!-- in return -->
<fieldset>
<legend>custom hook useForm</legend>
<div>
<label htmlFor="user">用户名</label>
<input
id="user"
name="user"
value={nativeForm.user}
onChange={nativeFormChange}
/>
</div>
<div>
<label htmlFor="pwd">密码</label>
<input
id="pwd"
name="pwd"
type="password"
value={nativeForm.pwd}
onChange={nativeFormChange}
/>
</div>
</fieldset>
以上就是一个简单的应用分享,开发没有绝对的事情,但多了解不同的作法与认知不同做法之间的优缺点,才是真正重要的事情,拿着自己的主观意见绑架他人的想法时,格局小了,眼界也小了,哪还来的了进步的空间。希望我的作法能够帮助到大家,之後也会分享更多我已知的作法。
二战末期,邱吉尔代表的政党大败,他也失去了首相的席位。 史达林幸灾乐祸的对邱吉尔说:「邱吉尔,你打了...
软件,或者,程序本质上是一个黑盒子;这个黑盒子接收一个输入,然後,会有一个输出; 输入:可以用数据去...
今天我来讲如何使用osm在kubernetes建立VNF。如果有想要在详细的了解OSM的话可以於他们...
今天我们要介绍的是python的类别,所谓的类别就是指将方法变数或物件建成一个群组,里面会有需要用到...
如需在地端环境操作 那需要去理解 什麽是node JS 什麽是NPM 需要参照 本地安装 使用 np...