react-selectで同じオプションが選択されている場合はonChangeをトリガーしない

Sachin Kumar

ドロップダウンですでに選択されている値を選択すると、react-selectドロップダウンonChangeがトリガーされます。すでに選択されている値が再度選択された場合にonChangeイベントをトリガーしないようにreact-selectを構成する方法はあります

これがコードサンドボックスのリンクです。Purpleを選択してみると、コンソールにログが表示されます。以下は、すぐに見たい場合の同じコードです。

import chroma from 'chroma-js';

import { colourOptions } from './docs/data';
import Select from 'react-select';

const dot = (color = '#ccc') => ({
  alignItems: 'center',
  display: 'flex',

  ':before': {
    backgroundColor: color,
    borderRadius: 10,
    content: '" "',
    display: 'block',
    marginRight: 8,
    height: 10,
    width: 10,
  },
});

const colourStyles = {
  control: styles => ({ ...styles, backgroundColor: 'white' }),
  option: (styles, { data, isDisabled, isFocused, isSelected }) => {
    const color = chroma(data.color);
    return {
      ...styles,
      backgroundColor: isDisabled
        ? null
        : isSelected ? data.color : isFocused ? color.alpha(0.1).css() : null,
      color: isDisabled
        ? '#ccc'
        : isSelected
          ? chroma.contrast(color, 'white') > 2 ? 'white' : 'black'
          : data.color,
      cursor: isDisabled ? 'not-allowed' : 'default',
    };
  },
  input: styles => ({ ...styles, ...dot() }),
  placeholder: styles => ({ ...styles, ...dot() }),
  singleValue: (styles, { data }) => ({ ...styles, ...dot(data.color) }),
};

const logConsole = (selectedVal) => {
  console.log(selectedVal)
}

export default () => (
  <Select
    defaultValue={colourOptions[2]}
    label="Single select"
    options={colourOptions}
    styles={colourStyles}
    onChange={logConsole}
  />
);
ラレン

考えられる解決策は、hideSelectedOptions小道具を使用して選択した値を非表示にすることです。

<Select
    { ... }
    hideSelectedOptions
/>

別の解決策は、Selectコンポーネントを制御されたコンポーネントに変更し、onChangeハンドラーをチェックインすることです。選択した値が現在選択されている値と一致する場合は、何もしません。

class MySelect extends Component {
    state = {
       value: null
    }

    onChange = (selectedValue) => {
        const { value } = this.state;
        if (value && value.value === selectedValue.value) return;

        // Do whatever you want here

        this.setState({ value: selectedValue });
    }

    render = () => (
        <Select
            { ... }
            value={this.state.value}
            onChange={this.onChange}
        />
    );
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

reactを使用して選択メニューからオプションを選択すると、変数secondMenuが更新されないのはなぜですか?

分類Dev

React-selectオプションが選択されない

分類Dev

React-ユーザーの検索値と一致するオプションがない場合はデフォルト値を選択します

分類Dev

REACT.JS-選択/オプションが表示されないはずです

分類Dev

プリプロセッサが選択されていない場合でも、このReactコードはCodePenでどのように機能しますか?

分類Dev

React-オプションが表示されないため、ユーザーが入力したエントリを操作するには{creatable}を選択します

分類Dev

画面がHOCでラップされている場合、StackNavigator画面のreactナビゲーションヘッダーがレンダリングされない

分類Dev

Reactの選択オプションなどの要素のデータ属性を保存してアクセスするにはどうすればよいですか?

分類Dev

create-react-appアプリケーションは、イジェクトされていない場合、そのbabel構成をどこに保存しますか?

分類Dev

React Antd v4オートコンプリートは、オプションを選択すると、ラベルではなく選択された値を表示します

分類Dev

認証されたルートと認証されていないルートがある場合、Expressを使用してreactアプリをクライアントに送信するにはどうすればよいですか?

分類Dev

ReactのセマンティックUIドロップダウン:<ahref>がコンテンツとして使用されている場合にonChangeが2回トリガーされます

分類Dev

React JSX:選択された<select>オプションで「selected」を選択

分類Dev

ReactJS-選択ドロップダウンから同じオプションが選択されている場合でもイベントをトリガーします

分類Dev

react-bootstrap-typeaheadユーザーがヒントを選択しているときではなく、 `Enter`でコールバック(状態の更新)をトリガーするにはどうすればよいですか?

分類Dev

ページネーションが制御されたreact-tableを使用して他のページにいる場合でも、選択したすべての行を削除します

分類Dev

`key`プロップが同じに保たれている場合でもReact要素はリセットされます

分類Dev

HTML SELECT-オプションが変更されていない場合でもJavaScript ONCHANGEイベントをトリガーします

分類Dev

react-selectを使用してreactjsの単純なテキストで複数選択オプションを表示したい

分類Dev

オプションでreact-selectがスペースを許可しないようにする方法は?

分類Dev

子コンポーネントの小道具が変更されていない場合でも、Reactはそれを再レンダリングしますか?

分類Dev

すでに選択されているオプションが選択されている場合に機能をトリガーする

分類Dev

JavascriptビデオloadmetadataイベントがReactでトリガーされない-Reduxアプリケーション

分類Dev

React-handleChangeメソッドが起動せず、選択したオプション名が更新されない

分類Dev

状態の値を変更しても、REACTの入力要素のonChangeがトリガーされないのはなぜですか

分類Dev

選択オプションが選択されている場合、Chromeは再描画をトリガーします

分類Dev

React-データシートeditorDialogは、ティガーonChangeなしでドロップダウンクリックによって閉じられました

分類Dev

マテリアルUIテキストフィールドヒントテキストは、reactでsetStateを使用してテキストが設定されている場合、テキストとオーバーラップします

分類Dev

選択した要素がReactで再レンダリングされた後、onChangeイベントをトリガーします

Related 関連記事

  1. 1

    reactを使用して選択メニューからオプションを選択すると、変数secondMenuが更新されないのはなぜですか?

  2. 2

    React-selectオプションが選択されない

  3. 3

    React-ユーザーの検索値と一致するオプションがない場合はデフォルト値を選択します

  4. 4

    REACT.JS-選択/オプションが表示されないはずです

  5. 5

    プリプロセッサが選択されていない場合でも、このReactコードはCodePenでどのように機能しますか?

  6. 6

    React-オプションが表示されないため、ユーザーが入力したエントリを操作するには{creatable}を選択します

  7. 7

    画面がHOCでラップされている場合、StackNavigator画面のreactナビゲーションヘッダーがレンダリングされない

  8. 8

    Reactの選択オプションなどの要素のデータ属性を保存してアクセスするにはどうすればよいですか?

  9. 9

    create-react-appアプリケーションは、イジェクトされていない場合、そのbabel構成をどこに保存しますか?

  10. 10

    React Antd v4オートコンプリートは、オプションを選択すると、ラベルではなく選択された値を表示します

  11. 11

    認証されたルートと認証されていないルートがある場合、Expressを使用してreactアプリをクライアントに送信するにはどうすればよいですか?

  12. 12

    ReactのセマンティックUIドロップダウン:<ahref>がコンテンツとして使用されている場合にonChangeが2回トリガーされます

  13. 13

    React JSX:選択された<select>オプションで「selected」を選択

  14. 14

    ReactJS-選択ドロップダウンから同じオプションが選択されている場合でもイベントをトリガーします

  15. 15

    react-bootstrap-typeaheadユーザーがヒントを選択しているときではなく、 `Enter`でコールバック(状態の更新)をトリガーするにはどうすればよいですか?

  16. 16

    ページネーションが制御されたreact-tableを使用して他のページにいる場合でも、選択したすべての行を削除します

  17. 17

    `key`プロップが同じに保たれている場合でもReact要素はリセットされます

  18. 18

    HTML SELECT-オプションが変更されていない場合でもJavaScript ONCHANGEイベントをトリガーします

  19. 19

    react-selectを使用してreactjsの単純なテキストで複数選択オプションを表示したい

  20. 20

    オプションでreact-selectがスペースを許可しないようにする方法は?

  21. 21

    子コンポーネントの小道具が変更されていない場合でも、Reactはそれを再レンダリングしますか?

  22. 22

    すでに選択されているオプションが選択されている場合に機能をトリガーする

  23. 23

    JavascriptビデオloadmetadataイベントがReactでトリガーされない-Reduxアプリケーション

  24. 24

    React-handleChangeメソッドが起動せず、選択したオプション名が更新されない

  25. 25

    状態の値を変更しても、REACTの入力要素のonChangeがトリガーされないのはなぜですか

  26. 26

    選択オプションが選択されている場合、Chromeは再描画をトリガーします

  27. 27

    React-データシートeditorDialogは、ティガーonChangeなしでドロップダウンクリックによって閉じられました

  28. 28

    マテリアルUIテキストフィールドヒントテキストは、reactでsetStateを使用してテキストが設定されている場合、テキストとオーバーラップします

  29. 29

    選択した要素がReactで再レンダリングされた後、onChangeイベントをトリガーします

ホットタグ

アーカイブ