MUI スイッチをクリックした場合、表示および値は更新されません。
P粉638343995
P粉638343995 2023-08-15 20:20:45
0
1
422

現在のプロジェクトで使用しているマテリアル UI トグル スイッチで問題が発生しています。コンポーネントがロードされるときに、コンソールに値を記録すると、初期値は正しいです。ただし、スイッチをクリックして「はい」から「いいえ」にすると、スイッチは正しく表示され、「いいえ」が選択されていることを示し、コンソールのログが再び開始されますが、値は「はい」のままです。スイッチをもう一度クリックして「いいえ」に戻そうとすると、トグルは反転せずに再レンダリングされ、コンソールのログが再び起動され、値が「いいえ」に更新されます。したがって、基本的には最初のクリックでスイッチが切り替わり、2 回目のクリックで値が切り替わります。以前に同じトグル スイッチを問題なく使用したことがありますが、クリックしたときにスイッチと値を反転させるには何を修正する必要があるか教えていただけますか?

入力変更の処理:

const handleInputChange = e => { const {名前, 値} = e.target; setValues({ ...値、 [名前]: ( typeof value === 'string' ? (value).replace(/ (?= )/g, '').trimStart() : value ) // 値が文字列の場合、先頭のスペースと複数のスペースを削除します }); };

次のフォームから呼び出されるスイッチ:

ToggleSwitch コンポーネント:

import * as React from 'react'; import {ボックス、スイッチ、タイポグラフィ} から '@material-ui/core'; デフォルト関数のエクスポート ToggleSwitch(props) { const {ラベル1、ラベル2、名前、onChange、値} = props; const [チェック済み、setChecked] = React.useState(false); const ConvertToEventParams = (名前, 値) => ({ ターゲット: { 名前, 値 } }); const curValue = 値 === 1 ? true : false; const handleSwitch = e => { setChecked(e.target.checked); }; React.useEffect(() => { setChecked(curValue); }, [curValue]); // チェックされた値が変更されるたびにトグル スイッチを再レンダリングします const handleChecked = e => { ハンドルスイッチ(e); onChange(convertToEventParams(name, (checked === false ? 1 : 0))); // True/False を 1/0 の値に変換します }; 戻る (
      <ボックス>
       <タイポグラフィー> {ラベル1} {
       <スイッチ 名前="{名前}" チェック済み="{チェック済み}" 値="{チェック済み}" onChange="{ハンドルチェック済み}" inputProps="{{'aria-label':" 'スイッチ'}}>} {ラベル2}   ); }


P粉638343995
P粉638343995

全員に返信 (1)
P粉298305266

ToggleSwitch コンポーネントで状態と選択された値を処理しています。ローカル状態 (チェック済み) とプロパティ (値) の両方があり、それらを同期したいとします。

この問題を解決するには、スイッチと値が適切に同期されていることを確認してください

親コンポーネントから値プロパティを渡しているので、そのプロパティを直接使用してスイッチの状態を決定できます。 不要な状態や効果を削除することで、コンポーネント コードを簡素化できます。

値プロパティを直接使用してスイッチの初期状態を決定し、onChange 関数を使用して親コンポーネントを更新できます。

リーリー
いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!