How to programmatically clear/reset React-Select? How to programmatically clear/reset React-Select? reactjs reactjs

How to programmatically clear/reset React-Select?


If you're using react-select you can try to pass null to value prop.

For example:

import React from "react";import { render } from "react-dom";import Select from "react-select";class App extends React.Component {  constructor(props) {    super(props);    const options = [      { value: "one", label: "One" },      { value: "two", label: "Two" }    ];    this.state = {      select: {        value: options[0], // "One" as initial value for react-select        options // all available options      }    };  }  setValue = value => {    this.setState(prevState => ({      select: {        ...prevState.select,        value      }    }));  };  handleChange = value => {    this.setValue(value);  };  handleClick = () => {    this.setValue(null); // here we reset value  };  render() {    const { select } = this.state;    return (      <div>        <p>          <button type="button" onClick={this.handleClick}>            Reset value          </button>        </p>        <Select          name="form-field-name"          value={select.value}          onChange={this.handleChange}          options={select.options}        />      </div>    );  }}render(<App />, document.getElementById("root"));

Here's a working example of this.


I came across this problem myself and managed to fix it by passing a key to the React-Select component, with the selected value appended to it. This will then force the ReactSelect to re-render itself when the selection is updated.

I hope this helps someone.

import ReactSelect from 'react-select';...<ReactSelect  key={`my_unique_select_key__${selected}`}  value={selected || ''}  .../>


You can clear the value of react select using the ref.

import React, { useRef } from "react";import Select from "react-select";export default function App() {  const selectInputRef = useRef();  const onClear = () => {    selectInputRef.current.select.clearValue();  };  return (    <div className="App">      <h1>Select Gender</h1>      <Select        ref={selectInputRef}        options={[          { value: "male", label: "Male" },          { value: "female", label: "Female" }        ]}      />      <button onClick={onClear}>Clear Value</button>    </div>  );}

Here is the CodeSandbox link