jsx-eslint/eslint-plugin-react

[react/jsx-key] Take advantage of type information, if available.

Open

#3,185 创建于 2022年1月21日

在 GitHub 查看
 (0 评论) (10 反应) (0 负责人)JavaScript (8,630 star) (2,797 fork)batch import
help wantedtypescript

描述

This issue was opened as a follow-up to #2258.

The problem

It's not uncommon to get props that then need to be spread over an element. Here's an abridged example from react-table:

const { rows } = useTable(/* ... */);
return (
  <tbody>
    {rows.map((row) => (
      <tr {...row.getRowProps()}>
        {row.cells.map((cell) => (
          <td {...cell.getCellProps()}>{cell.render("Cell")}</td>
        ))}
      </tr>
    ))}
  </tbody>
);

Here, getRowProps() and getCellProps() provide a key property for you. Currently, react/jsx-key can't detect this and marks the tr and td elements as invalid.

A possible solution

With access to type information provided by something like typescript-eslint, this rule could get access to the names of spread properties and see if key is one of them.

贡献者指南