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

React下拉菜单出现空白行,如何将索引0的用户名称固定显示为Myself?

解决方案

有两种修改方式可选,可根据业务场景选择:

方案1:获取数据后加工数组(推荐)

该方案仅修改数据源,后续所有用到users数组的场景都会自动生效,无需重复处理。
修改componentDidMount中setState的users赋值逻辑,代码如下:

async componentDidMount() {
  const ep = `${process.env.REACT_APP_API}/partners/roles`;
  const users = await axios.get(ep);
  
  if (users.data.success) {
    this.setState({
      // 过滤后对索引为0的用户统一修改username为Myself
      users: users.data.data.users.filter(f => !f.isArchived).map((user, idx) => 
        idx === 0 ? {...user, username: 'Myself'} : user
      )
    });
  }
  console.log("Users", users)
  if (this.props.item) {
    this.setState({
      id: this.props.item.id,
      description: this.props.item.description,
      due: this.props.item.due,
      priority: this.props.item.priority,
      assigned: this.props.item.assigned
    });
  }
}

方案2:渲染下拉时直接判断

如果不想修改原始的users数组数据,仅需要下拉菜单场景生效,可以直接修改下拉选项的渲染逻辑:

<select
  name="assigned"
  id="assignedto"
  type="text"
  className="form-control"
  style={{ width: "70%" }}
  onChange={e => {
    this.setState({
      assigned: e.target.value
    });
  }}
>
<option value="">Myself</option>
  {this.state.users.map((e, idx) => (
    <option value={e.id} key={e.id}>
      {/* 索引为0时固定显示Myself,其他情况正常显示username */}
      {idx === 0 ? 'Myself' : e.username}
    </option>
  ))}
</select>

注意事项

当前代码中已经硬编码了一个值为空的Myself默认选项,如果修改后下拉列表出现两个Myself选项,可以根据实际业务需求删掉这个硬编码的默认项即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:04