オブジェクトの配列を使用してsetStateで状態を更新しないで反応する

フェリンパテル

下の画像に示すこのテーブルを作成したいと思います。編集ボタンをクリックするとテキストフィールドに変わり、確認ボタンを押すと再びtrtdタグに変換されます。これが同じコードです。idプロパティ、nameプロパティ、valueプロパティを持つオブジェクトの配列を作成しました。編集ボタンをクリックするとテキストフィールドに変わり、確認ボタンをクリックするとテキストフィールドの値がオブジェクトの配列で更新されます。
ここに画像の説明を入力してください

import React, { useState } from "react";
import style from "./css/Register.module.css";
import { Table, Button, Icon, TextInput } from "react-materialize";

const ManipulateRegister = () => {
  const [RegisterData, setRegisterData] = useState([
    {
      id: 0,
      name: "W Register",
      value: 0,
      isEdit: false,
    },
    {
      id: 1,
      name: "Z Register",
      value: 0,
      isEdit: false,
    },
    {
      id: 2,
      name: "B Register",
      value: 0,
      isEdit: false,
    },
    {
      id: 3,
      name: "C Register",
      value: 0,
      isEdit: false,
    },
  ]);

  const handleRegisterEditBtn = (register) => {
    var datas = RegisterData;
    datas.forEach((data) => {
      if (data.id === register.id) {
        data.isEdit = true;
      }
    });
    console.log(datas);
    setRegisterData(datas);
  };

  return (
    <div className={style.addressWrapper}>
      <div className={style.addressTableWrapper}>
        <Table centered hoverable responsive striped>
          <thead className="orange lighten-2">
            <tr>
              <th data-field="Namee">Register Name</th>
              <th data-field="value">Value</th>
              <th data-field="action">Action</th>
            </tr>
          </thead>
          <tbody>
            {RegisterData.map((register) => (
              <tr>
                {register.isEdit ? (
                  <div>
                    <TextInput type="number" placeholder="Enter Value" />
                    <Button small waves style={{ margin: "20px" }}>
                      Submit
                    </Button>
                    <Button small waves className="red lighten-2">
                      Cancel
                    </Button>
                  </div>
                ) : (
                  <React.Fragment>
                    <td>{register.name}</td>
                    <td>{register.value}</td>
                    <td>
                      <Button
                        floating
                        icon={<Icon>edit</Icon>}
                        onClick={() => handleRegisterEditBtn(register)}
                      />
                    </td>
                  </React.Fragment>
                )}
              </tr>
            ))}
          </tbody>
        </Table>
      </div>
      <Button node="button" className="red lighten-1" waves="light">
        Reset
      </Button>
    </div>
  );
};
export default ManipulateRegister;


デニス・ヴァッシュ

同じ参照を変更する場合、コピーをレンダリングする必要があります。そうしないと、コンポーネントがレンダリングされません(浅い比較)。

const handleRegisterEditBtn = (register) => {
  const data = RegisterData.map((data) =>
    data.id === register.id ? { ...data, isEdit: true } : data
  );
  setRegisterData(datas);
};

または、次のように変更します。

setRegisterData([...datas])

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

setStateなしで状態配列オブジェクトの変更に反応する

分類Dev

動作していない状態のオブジェクトの配列を反応させる

分類Dev

反応状態のインデックスを使用してオブジェクトを更新する方法は?

分類Dev

配列のオブジェクトに新しい値で状態を更新するのは本当に遅い

分類Dev

Reactを使用して配列内のオブジェクトの状態を更新するにはどうすればよいですか?

分類Dev

反応し、オブジェクトの配列で構成された状態で単一の値を更新します

分類Dev

子コンポーネントから反応状態(オブジェクトの配列)を更新します

分類Dev

setStateを使用して、状態のオブジェクトの配列を変更します

分類Dev

React.js:状態に保存されているオブジェクトの配列を更新しています

分類Dev

Undefinedは状態配列内のオブジェクトではなく、状態配列の長さを見つけようとしています

分類Dev

不変性ヘルパーを使用してReact状態の配列オブジェクトを更新する

分類Dev

ReactJSの状態オブジェクトでsetStateを使用する

分類Dev

setStateが状態オブジェクトを更新しない

分類Dev

promise内でsetStateを使用して状態を正しく更新しないように反応する

分類Dev

オブジェクトの配列を受信したときの反応状態の更新

分類Dev

setStateを使用してオブジェクトの配列内のオブジェクトを更新する方法

分類Dev

親の状態を新しいオブジェクトで更新する方法

分類Dev

オブジェクトの配列を更新しない反応ステート

分類Dev

setStateでJavaScriptDateオブジェクトを使用すると、フックuseStateがUIを更新しないことに反応します

分類Dev

API応答で状態を更新できないのはなぜですか?データはオブジェクトの配列です

分類Dev

react-nativeでオブジェクトの状態を更新します-reduxを使用していません

分類Dev

Pythonでlivyを使用しているときの応答オブジェクト「dead」の状態

分類Dev

Reactフックを使用して、オブジェクトの配列内のオブジェクトの一部の状態を更新する方法

分類Dev

オブジェクトの配列から単一の値を更新してから状態を更新する方法

分類Dev

反応状態は、反応要素であるオブジェクトの配列です

分類Dev

オブジェクトが別の配列で一致する値を持つ場合、オブジェクトの配列の更新に反応します

分類Dev

Reduxでspread演算子を使用して内部にある配列とオブジェクトの古い状態を取得する方法

分類Dev

setState なしで状態の更新を反応させる

分類Dev

API呼び出しからオブジェクトの状態配列を更新しています

Related 関連記事

  1. 1

    setStateなしで状態配列オブジェクトの変更に反応する

  2. 2

    動作していない状態のオブジェクトの配列を反応させる

  3. 3

    反応状態のインデックスを使用してオブジェクトを更新する方法は?

  4. 4

    配列のオブジェクトに新しい値で状態を更新するのは本当に遅い

  5. 5

    Reactを使用して配列内のオブジェクトの状態を更新するにはどうすればよいですか?

  6. 6

    反応し、オブジェクトの配列で構成された状態で単一の値を更新します

  7. 7

    子コンポーネントから反応状態(オブジェクトの配列)を更新します

  8. 8

    setStateを使用して、状態のオブジェクトの配列を変更します

  9. 9

    React.js:状態に保存されているオブジェクトの配列を更新しています

  10. 10

    Undefinedは状態配列内のオブジェクトではなく、状態配列の長さを見つけようとしています

  11. 11

    不変性ヘルパーを使用してReact状態の配列オブジェクトを更新する

  12. 12

    ReactJSの状態オブジェクトでsetStateを使用する

  13. 13

    setStateが状態オブジェクトを更新しない

  14. 14

    promise内でsetStateを使用して状態を正しく更新しないように反応する

  15. 15

    オブジェクトの配列を受信したときの反応状態の更新

  16. 16

    setStateを使用してオブジェクトの配列内のオブジェクトを更新する方法

  17. 17

    親の状態を新しいオブジェクトで更新する方法

  18. 18

    オブジェクトの配列を更新しない反応ステート

  19. 19

    setStateでJavaScriptDateオブジェクトを使用すると、フックuseStateがUIを更新しないことに反応します

  20. 20

    API応答で状態を更新できないのはなぜですか?データはオブジェクトの配列です

  21. 21

    react-nativeでオブジェクトの状態を更新します-reduxを使用していません

  22. 22

    Pythonでlivyを使用しているときの応答オブジェクト「dead」の状態

  23. 23

    Reactフックを使用して、オブジェクトの配列内のオブジェクトの一部の状態を更新する方法

  24. 24

    オブジェクトの配列から単一の値を更新してから状態を更新する方法

  25. 25

    反応状態は、反応要素であるオブジェクトの配列です

  26. 26

    オブジェクトが別の配列で一致する値を持つ場合、オブジェクトの配列の更新に反応します

  27. 27

    Reduxでspread演算子を使用して内部にある配列とオブジェクトの古い状態を取得する方法

  28. 28

    setState なしで状態の更新を反応させる

  29. 29

    API呼び出しからオブジェクトの状態配列を更新しています

ホットタグ

アーカイブ