javascript - 如何使用 React Js 在 select 选项上显示 svg?

标签 javascript reactjs svg webpack create-react-app

我有一个选择标志,其中选项是img(其中src是svg)

我的codeSandbox .


Config.default = "fr";
Config.list = {
  de: {
    text: "Deutsch",
    icon: require("./images/de.svg")
  },
  en: {
    text: "English",
    icon: require("./images/eng.svg")
  },
  it: {
    text: "Italiano",
    icon: require("./images/italy.svg")
  }
};
class App extends Component {
  constructor() {
    super();

    this.state = {
      language: Config.default
    };
  }

  render() {
    return (
      <header className="d-flex align-items-end justify-content-end">
        <LanguageList Language={this.state.language} />
        <FormControl variant="outlined">
          <div className="wrap-select">
            <Select
              value={this.state.language}
              className="select-lang"
              onChange={e => this.setState({ language: e.target.value })}
              inputProps={{
                name: "locale"
              }}
            >
              <MenuItem value="en">
                <div className="wrap-content-lang">
                  <img width="20" src="./images/eng.svg" />
                </div>
              </MenuItem>
              <MenuItem value="it">
                <div className="wrap-content-lang">
                  <img width="20" src="./images/italy.svg" alt="it" />
                </div>
              </MenuItem>
              <MenuItem value="de">
                <div className="wrap-content-lang">
                  <img width="20" src="./images/de.svg" />
                </div>
              </MenuItem>
            </Select>
          </div>
        </FormControl>
      </header>
    );
  }
}

当我运行它时,我得到:

enter image description here

图片不显示,如何显示?

最佳答案

问题是这样的src路径在运行时不可用:

<img width="20" src="./images/eng.svg" alt="en" />

// instead
<img src={require("./images/eng.svg")}/>

在构建时,webpack 会生成一个哈希路径,请参阅 Adding Images, Fonts, and Files@gdh answer .

import { ReactComponent as GermanFlag } from "./images/de.svg";

class App extends Component {
  render() {
    return <GermanFlag />;
  }
}

Edit vibrant-forest-t5k7n

关于javascript - 如何使用 React Js 在 select 选项上显示 svg?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62133276/

相关文章:

javascript - 如何在 JavaScript 中操作此 JSON 数组

javascript - React - 功能 setState(先前状态)与新更新值不同?

reactjs - 如何延迟 redux 状态更改以允许 React 组件中出现副作用

javascript - 如果我将 svg 附加到 div,d3 mouseover 事件不会触发

javascript - 如何使用 javascript 或 jquery 动态添加 SVG 图形?

javascript - javascripts 访问密码字段值是否被视为安全风险?

javascript - 函数未运行/未正确调用

javascript - 引导关闭 Canvas 菜单显示小于 992px

javascript - 在 React JS 中导入数组函数后无法检索我的电影数据

使用边框半径的css圆需要改变圆相交部分的颜色