You need to enable JavaScript to run this app. React中如何为react-multi-select-component动态设置选中项
优惠活动
大模型
产品
解决方案
定价
更多

React中如何为react-multi-select-component动态设置选中项

实现默认选中的方法

react-multi-select-component的选中值由绑定的value属性控制,格式和options的单条结构完全一致,是选中项对象组成的数组,你要设置默认选中直接给useState传入对应初始值即可。

你提到的默认选中第2、第3个选项,对应你给出的静态options数组里索引为1的Mango、索引为2的Strawberry,修改useState的初始参数即可,完整代码如下:

import React, { useState } from "react";
import MultiSelect from "react-multi-select-component";
const Example = () => {
  const options = [
    { label: "Grapes", value: "grapes" },
    { label: "Mango", value: "mango" },
    { label: "Strawberry", value: "strawberry", disabled: true },
    { label: "Watermelon", value: "watermelon" },
    { label: "Pear", value: "pear" },
  ];
  // 仅修改这一行,传入默认选中的选项数组
  const [selected, setSelected] = useState([options[1], options[2]]);
  return (
    <div>
     <h1>Select Fruits</h1>
     <pre>{JSON.stringify(selected)}</pre>
     <MultiSelect
      options={options}
      value={selected}
      onChange={setSelected}
      labelledBy="Select"
     />
    </div>
  );
};

export default Example;

如果担心后续options顺序调整导致索引取值不准,也可以直接把匹配的选项对象传入初始值:

const [selected, setSelected] = useState([
  { label: "Mango", value: "mango" }, 
  { label: "Strawberry", value: "strawberry", disabled: true }
]);

动态修改选中项的场景

如果你的options是从接口动态获取的,或者需要在后续交互中修改选中项,直接调用setSelected传入对应选中数组即可,比如加载完接口数据后默认选中指定value的选项:

import React, { useState, useEffect } from "react";
import MultiSelect from "react-multi-select-component";
const Example = () => {
  const [options, setOptions] = useState([]);
  const [selected, setSelected] = useState([]);

  // 模拟接口请求获取options
  useEffect(() => {
    const fetchOptions = async () => {
      const res = await fetch('/api/fruit-options')
      const data = await res.json()
      setOptions(data)
      // 拿到选项后设置默认选中value为mango、strawberry的项
      const defaultSelected = data.filter(item => ['mango', 'strawberry'].includes(item.value))
      setSelected(defaultSelected)
    }
    fetchOptions()
  }, [])

  return (
    <div>
     <h1>Select Fruits</h1>
     <pre>{JSON.stringify(selected)}</pre>
     <MultiSelect
      options={options}
      value={selected}
      onChange={setSelected}
      labelledBy="Select"
     />
    </div>
  );
};

export default Example;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 09:06:04