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

如何在React表单中获取react-rating组件的取值?

解决React Rating组件获取评分值时的TypeError问题

嘿,我之前用这个Rating组件的时候也踩过同样的坑!咱们先搞清楚问题出在哪:

你遇到的TypeError: undefined is not an object (evaluating 'event.target.name'),本质是因为这个Rating组件的onChange回调没有传递标准的DOM事件对象,它直接把选中的评分数值作为参数传过来了,而不是带target属性的event。所以你原来用来处理普通表单输入(比如input、select)的逻辑,在这个组件上自然就失效了。

给你两个简单的解决方案:

方案1:单独编写评分变更处理函数

直接为Rating组件写一个专属的处理函数,接收评分值并更新表单状态:

const handleRatingChange = (ratingValue) => {
  // 假设你的表单状态存在formState里,facilityRating是存储评分的字段
  setFormState(prevState => ({
    ...prevState,
    facilityRating: ratingValue
  }));
};

// 在组件中使用
<Rating onChange={handleRatingChange} />

方案2:复用现有表单处理函数(包装调用)

如果你想继续用原来的表单状态更新逻辑,可以手动把评分值和字段名传递进去:

// 假设你原来的表单处理函数是这样的
const handleInputChange = (name, value) => {
  setFormState(prevState => ({
    ...prevState,
    [name]: value
  }));
};

// 使用Rating时,通过箭头函数包装传递参数
<Rating onChange={(value) => handleInputChange('facilityRating', value)} />

用这两种方式中的任意一种,你就能正常获取并更新评分值了,再去console.log你的formState,就能看到facilityRating字段跟着选中的星星数变化啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:05:31