簡體   English   中英

React 鈎子,使用表初始化和更改 state 和 onClick 事件

[英]React hooks, initialize and change state with onClick event using tables

我正在顯示一個帶有單個字段“標題”的 html 表。 一旦用戶單擊其中一個表格行,我想在表格下方顯示相應的標題名稱。 使用下拉列表效果很好,但是當我嘗試將其轉換為表格時,state 停止更新。 (我已經將 options 屬性作為一個工作示例,但是這需要刪除或替換)。 我還想在頁面首次加載時顯示表格中的第一個標題 (title[0])。 我認為這可能需要一個 useEffect。 任何幫助,將不勝感激。

import React, { useState } from 'react';

import data from '../../data-files/data.json';

const TestPage = () => {
  const [title, setTitle] = useState('');

  const handleClick = e => {
    const selected = e.target.value;
    setTitle(selected);
  };

  return (
    <>
      <table
        cellPadding="0"
        cellSpacing="0"
        style={{ background: '#1A3D33', color: '#fff' }}
      >
        <thead>
          <tr>
            <th align="left">Title</th>
          </tr>
        </thead>
        <tbody>
          {data.data.map(i => (
            <tr key={i.id}>
              <td onClick={handleClick} style={{ background: '#439981' }}>
                <option>{i.name}</option>
              </td>
            </tr>
          ))}
        </tbody>
      </table>

      <h3 style={{ marginTop: '50px' }}>{title}</h3>
    </>
  );
};

export default TestPage;

數據來自本地文件:

{
  "data": [
    {
      "id": "1",
      "name": "title 1"
    },
    {
      "id": "2",
      "name": "title 2"
    },
    {
      "id": "3",
      "name": "title 3"
    },
    {
      "id": "4",
      "name": "title 4"
    },
    {
      "id": "5",
      "name": "title 5"
    }
  ]
}

沒有<option>是行不通的,因為事件不一樣,您可以嘗試將名稱作為參數傳遞給處理 function:

  {data.data.map(i => (
    <tr key={i.id}>
      <td onClick={() => handleClick(i.name)} style={{ background: '#439981' }}>
        <option>{i.name}</option>
      </td>
    </tr>
  ))}

當然,如果你做了那個改變,你將需要重構handleClick

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM