Search code examples
javascriptreactjssemantic-ui-reactreact-final-form

getting error Dropdown `value` must be an array when `multiple` is set. Received type: `[object String]`


I am getting this error while using multiselect with final-form.

Dropdown value must be an array when multiple is set. Received type: [object String]

here is my code:

https://codesandbox.io/s/cool-torvalds-lhe9d

<Dropdown
        {...props.input}
        clearable
        fluid
        multiple
        search
        onChange={(e, data) => {
          return data.value.length > 0
            ? input.onChange(data.value)
            : input.onChange("");
        }}
        onSearchChange={onSearchChange}
        selection
        defaultValue={[]}
        options={data}
        placeholder="Select values"
      />

any update?


Solution

  • You need to remove defaultValue prop and pass value prop as [] if value is not available to Dropdown component.

    const SingleSelectAutoComplete = props => {
      const renderError = ({ error, touched }, id) => {
        if (touched && error) {
          return <div id={id}>{error}</div>;
        }
      };
      const {
        input,
        label,
        onSearchChange,
        data,
        meta,
        required,
        onChange,
        helloWorld
      } = props;
      console.log("***********************");
      let { value, ...restProps } = props.input;
      const id = input.name;
      return (
        <div
          className={`field ${meta.error && meta.touched ? " error" : ""} ${
            required ? " required" : ""
          }`}
        >
          <label>{label}</label>
          <Dropdown
            {...restProps}
            value={value || []}
            clearable
            fluid
            multiple
            search
            onChange={(e, data) => {
              return data.value.length > 0
                ? input.onChange(data.value)
                : input.onChange("");
            }}
            onSearchChange={onSearchChange}
            selection
            options={data}
            placeholder="Select values"
          />
          {renderError(meta, `${id}-error-text`)}
        </div>
      );
    };