...

/

The MultiSelect Drop-Down Component

The MultiSelect Drop-Down Component

Learn how to create a reusable multi-select drop-down component with React, Formik, and react-select.

Just like the CheckboxGroup component, we may want to select multiple options in our drop-down. To do this, we can simply pass multiple={true} to the Field component.

Press + to interact
<Field name={name} {...restOfProps} as="select" multiple={true}>
{options.map((option) => (
<option key={option.value} value={option.value}>
{option.label}
</option>
))}
</Field>

We then make the initial value for the field an array since we want to accept multiple options. But the default interface for a multiselect field is not quite usable and will need some customization. To do this, we’ll use the react-select library.

MultiSelect with react-select

We’ll create the MultiSelect component in the components/MultiSelect/index.js file.

.form-container {
  background: white;
  box-shadow: 0px 4px 0px #eff1f3;
  border-radius: 20px;
  max-width: 480px;
  margin: 56px auto;
  padding: 40px;
}

.header-text {
  font-weight: 700;
  font-size: 24px;
  line-height: 120%;
  text-align: center;
  color: #231942;
}

.sub-text {
  font-weight: 400;
  font-size: 16px;
  line-height: 24px;
  color: #99a0ae;
  text-align: center;
  margin-top: 8px;
}

* {
  font-family: Helvetica, Cambria, Droid Sans, Helvetica Neue, sans-serif;
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  transition: 0.6s;
}

body {
  background: #f6f8fa;
}
button {
  outline: none;
  border: none;
}


button[type="submit"] {
  background: #67adc8;
  border-radius: 8px;
  margin-top: 48px;
  width: 100%;
  font-weight: 600;
  font-size: 16px;
  line-height: 24px;
  color: #ffffff;
  padding: 16px;
  cursor: pointer;
}

button[type="submit"]:hover {
  background: #3399c9;
}
SelectDropdown component with react-select library

In the onChange ...