【问题标题】:how to create dropdown in react with icon如何创建下拉菜单以与图标做出反应
【发布时间】:2023-04-10 05:44:01
【问题描述】:

嗨,我想在react 中创建一个dropDown,每个项目都有一个图标。当我尝试react-select,但它没有显示icon,也没有显示选定的值。当我从react-select component 中删除value prop 时,label 显示。我想创建这样的下拉列表。

//USerInfo.js

import React from "react";
import { connect } from "react-redux";
import FontAwesome from "react-fontawesome";
import Select from "react-select";

import { setPresence } from "../../ducks/user";

import "./UserInfo.css";

class UserInfo extends React.Component {
  //   constructor(props) {
  //     super(props);
  //     this.state = {
  //       currentPresence: "available",
  //     };
  //   }

  presenceOpts = [
    { value: "available", label: "Available" },
    { value: "dnd", label: "Busy" },
    { value: "away", label: "Away" },
  ];

  setPresenceFun(presence) {
    this.props.setPresence(presence);
  }

  renderPresenceOption(option) {
    return (
      <div className="presenceOption">
        <FontAwesome name="circle" className={"presenceIcon " + option.value} />
        {option.label}
      </div>
    );
  }

  renderPresenceValue(presence) {
    return (
      <div className="currentPresence">
        <FontAwesome
          name="circle"
          className={"presenceIcon " + presence.value}
        />
      </div>
    );
  }

  render() {
    return (
      <div className="UserInfo">
        {this.props.client.authenticated && (
          <div className="authenticated">
            <div className="user">
              <div className="presenceControl">
                <Select
                  name="presence"
                  value={this.props.user.presence.value}
                  options={this.presenceOpts}
                  onChange={this.setPresenceFun.bind(this)}
                  clearable={false}
                  optionRenderer={this.renderPresenceOption}
                  valueRenderer={this.renderPresenceValue}
                />
              </div>

              <div className="username">
                <p>{this.props.client.jid.local}</p>
              </div>
            </div>
          </div>
        )}
      </div>
    );
  }
}

const mapStateToProps = (state, props) => ({
  client: state.client,
  user: state.user,
});

const mapDispatchToProps = (dispatch, props) => {
  return {
    setPresence: (presence) => dispatch(setPresence(presence)),
  };
};

export default connect(mapStateToProps, mapDispatchToProps)(UserInfo);

【问题讨论】:

    标签: javascript reactjs react-select-search


    【解决方案1】:

    您可以自定义下拉选项

    这可以帮助您解决 react select 的自定义样式问题。

    https://codesandbox.io/s/react-select-add-custom-option-forked-u1iee?file=/src/index.js

    【讨论】:

      猜你喜欢
      • 2018-12-23
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 2022-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多