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

React+Material Ui自定义SVG表情滑块及状态同步功能实现咨询

功能效果图
功能效果图

解决方案

现有问题修复

原有代码无法同步表情是因为存在几个逻辑问题:

  • 滑块未做value绑定,不是受控组件,无法同步状态
  • datalist的option值设为了字符串,数值判断逻辑无法匹配
  • 数值区间存在70-74的空缺段,无对应表情匹配
  • 导入了未使用的Router冗余依赖

自定义SVG表情实现

你可以将自定义SVG封装为组件直接调用,以下是完整修改后的可运行代码:

import React, { useState } from "react";
// 替换为你本地自定义SVG文件的实际存储路径
import MoodAwful from './assets/awful.svg'
import MoodBad from './assets/bad.svg'
import MoodNeutral from './assets/neutral.svg'
import MoodGood from './assets/good.svg'
import MoodGreat from './assets/great.svg'

export default function Emoji() {
  const [mood, setMood] = useState(<MoodAwful />);
  const [sliderVal, setSliderVal] = useState(0);

  function handleChange(e) {
    const val = Number(e.target.value);
    setSliderVal(val);
    if (val < 25) {
      setMood(<MoodAwful />);
    } else if (val >= 25 && val < 50) {
      setMood(<MoodBad />);
    } else if (val >= 50 && val < 75) {
      setMood(<MoodNeutral />);
    } else if (val >= 75 && val < 90 ) {
      setMood(<MoodGood />);
    } else if (val >= 90) {
      setMood(<MoodGreat />);
    }
  }

  return (
    <div className="emoji">
      <div style={{position: "relative", bottom: "-90px", fontSize: "100px",transition: "ease-in-out"}}>
        <input 
          style={{width: "-webkit-fill-available"}} 
          type="range" 
          min="0"
          max="100"
          value={sliderVal}
          list="tickmarks" 
          onChange={handleChange}  
        />
      </div>
      <datalist id="tickmarks">
        <option value="0" label="糟糕"></option>
        <option value="25" label="不好"></option>
        <option value="50" label="一般"></option>
        <option value="75" label="不错"></option>
        <option value="90" label="很好"></option>
      </datalist>
      <p style={{position: "relative", bottom: "108px", width: "70px", height: "70px" }}>{mood}</p>
    </div>
  );
}

如果不想单独保存SVG文件,也可以直接把SVG的JSX代码写在对应的setMood参数位置,无需额外导入文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:15:03