【解決方法】2 つの別個の div で同じマップ関数を使用する方法は?


divStyle div に製品があり、ウィンドウ div に製品の詳細があります。

[詳細]ボタンをクリックするとウィンドウが開き、divStyle 製品の製品説明が含まれている必要があります。 問題は、ウィンドウ div が map 関数の外にあることです。
isShown 中括弧が原因でウィンドウ div をマップ関数の最後に配置すると、機能しません。

では、クリックした商品と同じ商品説明を使用マップで返すにはどうすればよいでしょうか?

Git リンク:

GitHub – folza1/react-modulzaro[^]

私が試したこと:

JavaScript
import "./App.css";
import cart from "./cart.jpg";
import { useState } from "react";

var data = require("./data.json");

function App() {
  const [isShown, setIsShown] = useState(false);

  const handleClick = (event) => {
    setIsShown(true);
  };

  const handleClickClose = (event) => {
    setIsShown(false);
  };

  return (
    <>
      <h1>Termékek</h1>
      <div id="main">
        {data.map((obj) => (
          <div className="divStyle" key={obj.id}>
            <div
              id="thumbNail"
              style={{ backgroundImage: `url(${obj.thumbnail})` }}
            ></div>
            <div id="product">
              <div id="title">
                <p>{obj.title}</p>
              </div>
              <div id="price">
                <p>${obj.price}</p>
              </div>
              <div
                id="cart"
                style={{
                  backgroundImage: `url(${cart})`,
                }}
              ></div>
            </div>
            <div id="reszletek">
              <button id="buttonDetails" onClick={handleClick}>
                Details
              </button>
            </div>
          </div>
        ))}
        {isShown && (
          <div id="window" onClick={handleClickClose}>
            <div className="details">{obj.description}</div>
            <div className="close">Close</div>
          </div>
        )}
      </div>
    </>
  );
}
export default App;

解決策 1

再利用する場合は、コンポーネントとして作成してください。 コンポーネントは再利用可能です。

コメント

タイトルとURLをコピーしました