You need to enable JavaScript to run this app. 如何使用React Hooks根据range输入框的值从数组中获取对应数值
优惠活动
大模型
产品
解决方案
定价
更多

如何使用React Hooks根据range输入框的值从数组中获取对应数值

解决方案

你只需要在滑块变化的事件回调中,拿到当前滑块对应的range值,从预设数组中匹配到对应的数据项后更新state即可。整个过程不会违反Hook的使用规则,因为useState本身是在组件顶层调用的,条件判断仅用于事件回调内的状态更新逻辑,完全合规。


完整代码实现

import { useState } from 'react';

// 预设的range和number映射数组
const arr = [{range:1, number:10},{range:2, number:50}, {range:3, number:100}];

function YourComponent() {
  // 初始化默认值为数组第三项
  const [value, setValue] = useState(arr[2]);

  function handleChangeValue(e) {
    // 把滑块返回的字符串值转为数字,和数组内range字段的类型匹配
    const currentRange = Number(e.target.value);
    // 匹配数组中对应的配置项
    const targetItem = arr.find(item => item.range === currentRange);
    // 匹配到有效项后更新状态
    if (targetItem) {
      setValue(targetItem);
    }
  }

  return (
    <div>
      <Input
        value={value.range}
        onChange={handleChangeValue}
        type="range"
        min="1"
        max="3"
      />
      <h1>{value.number}</h1>
    </div>
  )
}

补充说明

如果你的数组内range字段是从1开始连续递增的,也可以直接用索引取值,性能比find遍历更高:

const targetItem = arr[currentRange - 1]

内容的提问来源于stack exchange,提问作者Izabela Górska

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 15:48:01