React - Hook 动态添加多行记录,针对输入框操作的一种实现方式

  • 背景
    初涉 【React - Hooks】 前端知识
    发现动态生成多条记录时,输入框数据变化的绑定事件是个常见的知识点
    在此记录一番,希望能帮到踩坑的小伙伴

    以变化 SKU 商品售价 为例,需求截图如下:

  • 实现步骤:

①. 在定义组件时,就可以初始化赋值一个,SKU 售价数组 —— "skuSellingPrice"

// 组件初始化赋值
···
const [skuSellingPrice,setSkuSellingPrice] = React.useState([]);
···

②. 设计输入框 "<input />" 元素组成,尤其注意绑定 onChange () 事件,以及 value 值的处理

<td>
  <input type="number" name={"sku_arr["+index+"][selling_price]"}
          onChange = {handleChangeSkuValue} data-index={index}
          data-sku_type="skuSellingPrice"
          value={skuSellingPrice[index]==undefined?'0.00':skuSellingPrice[index]} 
          className="layui-input input-selling_price"/>
</td>

③. 定义 "handleChangeSkuValue()" 监听事件绑定

// 商品售价 "onChange" 监听事件绑定
function handleChangeSkuValue(e){
	 let index = e.target.getAttribute("data-index");
	 let sku_type = e.target.getAttribute("data-sku_type");
	 let val = e.target.value;
	 let opArr = [];
	 switch (sku_type){
	     case 'skuSellingPrice':
	         opArr = [...skuSellingPrice];
	         opArr[index] = (val=='')?0:val;
	         setSkuSellingPrice(opArr);
	         break;
	     default:
	         break;
	 }
}
  • 【注意】

    1. 注意鄙人对 value 值的处理操作,建议实测优化
      value={skuSellingPrice[index]==undefined?'0.00':skuSellingPrice[index]}
    2. 代码中,我对 data-index 的赋值
      其实就是 SKU 的规格ID拼接,便于唯一的索引区分,可自行设定
  • 继续学习,加油!加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值