You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已解决:Next.js+TypeScript中根据选中ID自动更新姓名字段

动态填充员工姓名字段问题解决

问题回顾

尝试通过选中的employeeId自动填充员工姓名字段,控制台打印employeeIDOptions时能看到完整的firstName和lastName数据,但姓名字段始终无法自动更新。

排查结论

问题根源在于自定义的InputLabel组件内部存在抽象逻辑,阻止了systemUsersPayload.employeeName状态值正确同步到输入框。

修正方案

针对InputLabel组件的限制,调整代码确保姓名字段能正确响应状态变化:

核心逻辑保留(无需修改)

// 员工数据获取
const { data: employeeID, error: employeeIDError } = useGetRequest(
    "/EmployeeRecord/all"
) as { data: any; error: any };

// 生成下拉框选项
const employeeIDOptions = employeeID?.map((type: any) => ({
    label: type.nextOfKinResponse.employeeID,
    value: type.id,
    firstName: type.firstName,
    lastName: type.lastName,
}));

// 监听employeeId变化,同步姓名
useEffect(() => {
    const selectedEmployee = employeeIDOptions?.find(
        (option: any) => option.value === systemUsersPayload.employeeId
    );
    if (selectedEmployee) {
        setSystemUsersPayload((prev) => ({
            ...prev,
            employeeName: `${selectedEmployee.firstName} ${selectedEmployee.lastName}`,
        }));
    }
}, [systemUsersPayload.employeeId, employeeIDOptions])

修正姓名字段的组件使用

针对InputLabel的内部限制,可通过以下两种方式修复:

  1. 强制触发组件重新渲染:
<InputLabel
    label="Employee Name"
    id="employee-name"
    type="text"
    placeholder="John Praise Anoki"
    value={systemUsersPayload.employeeName}
    onChange={(e) => {
        setSystemUsersPayload((prev) => ({
            ...prev,
            employeeName: e.target.value,
        }));
    }}
    // 通过key值变化强制组件刷新,确保value同步
    key={`employee-name-${systemUsersPayload.employeeName}`}
/>
  1. 替换为原生输入组件(若业务允许):
<div className="input-group">
    <label htmlFor="employee-name">Employee Name</label>
    <input
        id="employee-name"
        type="text"
        placeholder="John Praise Anoki"
        value={systemUsersPayload.employeeName}
        onChange={(e) => {
            setSystemUsersPayload((prev) => ({
                ...prev,
                employeeName: e.target.value,
            }));
        }}
    />
</div>

内容的提问来源于stack exchange,提问作者Smiles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 21:20:07