简体   繁体   English

如何在反应选择中获取一组选定值

[英]How to get group of selected value in react-select

I want to use grouped options.我想使用分组选项。 I want to get group of selected value.我想获得一组选定的值。 For example when I selected green, how can I know it is a color?例如,当我选择绿色时,我怎么知道它是一种颜色?

sandbox: https://codesandbox.io/s/codesandboxer-example-forked-x3l2c4?file=/example.tsx沙箱: https://codesandbox.io/s/codesandboxer-example-forked-x3l2c4?file=/example.tsx

Color --> red, yellow, green颜色 --> 红、黄、绿

Flavor --> Vanilla, Chocolate风味 --> 香草、巧克力

import React, { Fragment } from 'react';

import Select, { components, MenuProps } from 'react-select';
import {
  ColourOption,
  colourOptions,
  FlavourOption,
  GroupedOption,
  groupedOptions,
} from './docs/data';

function onChangeHandler(val){
  console.log("val:" ,val)
}


export default () => (
  <Select<ColourOption | FlavourOption, false, GroupedOption>
    defaultValue={colourOptions[1]}
    options={groupedOptions}
    onChange={onChangeHandler}
  />
);

If I understood you correctly you want to know about all selected options and at the same time you also want to know which option belongs to which group.如果我对你的理解是正确的,你想知道所有选择的选项,同时你还想知道哪个选项属于哪个组。

You can not do this by default, however you can customize your group options and add another key which can indicate group reference/name so this way when onChange callback will be triggered you will get that option and you can see your group reference/name.默认情况下您不能这样做,但是您可以自定义您的组选项并添加另一个可以指示组引用/名称的键,这样当onChange回调将被触发时,您将获得该选项并且您可以看到您的组引用/名称。

Check out this example and live-demo here . 在此处查看此示例和现场演示。

import React from "react";

import Select from "react-select";
import {
  ColourOption,
  FlavourOption,
  GroupedOption,
  groupedOptions
} from "./docs/data";

function onChangeHandler(val, meta) {
  console.log(val, "val");
  const selectedOptions = val;
  let goupedSelected = new Map();
  selectedOptions.forEach((option) => {
    const { groupName: key } = option;
    const found = goupedSelected.get(key);
    if (found) {
      found.options = [...found.options, option];
    } else {
      goupedSelected.set(key, {
        groupName: key,
        options: [option]
      });
    }
  });
  console.log([...goupedSelected.values()]);
}

export default () => (
  <Select<ColourOption | FlavourOption, true, GroupedOption>
    options={groupedOptions}
    onChange={onChangeHandler}
    isMulti={true}
  />
);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM