<option> 可以有多个值吗?使用反应钩子

Can <option> has more than one value? using React-hooks

我想知道我的选项在反应中是否可以有多个值。

任何人都可以帮助我如何为我的选项增加新的价值吗?如您所见,"value2" 不是正确的做法。

    const handleSelect = e => {
    const { target } = e;
    setAccount(target.value);
    setAccId(target.value2);
  };
  console.log("account", account);
  return (
    <Card width bold>
      New Transaction
      <select
        value={account}
        onChange={e => handleSelect(e)}
        className="transaction__select"
      >
        <option>Choose acc</option>
        {usersAccounts &&
          usersAccounts.map(acc => (
            <option value={acc.accountNumber} value2={acc.id} key={acc.id}>
              {acc.accountNumber}
            </option>
          ))}

我找到了 JSON 的解决方案和其他解决方案,但我无法找到如何在 React 中为我的代码创造更多价值。

那不是 React 相关的东西,而是 html。 option 元素只能具有有效属性(例如值、禁用、标签和选定 - 如果我没记错的话,在反应中你使用 select 元素上的选定),val2 不是其中之一.

如果您有权访问 userAccounts,请将 option 值设置为数组中帐户的 index。然后使用传递的索引调用 setAccountsetAccId。否则,您可以使用 data 属性。参见 https://reactjs.org/blog/2017/09/08/dom-attributes-in-react-16.html

使用index访问数组

const handleSelect = e => {
    const { target } = e;

    setAccount(userAccounts[target.value].accountNumber);
    setAccId(userAccounts[target.value].id);
  };
  console.log("account", account);
  return (
    <Card width bold>
      New Transaction
      <select
        value={account}
        onChange={e => handleSelect(e)}
        className="transaction__select"
      >
        <option>Choose acc</option>
        {usersAccounts &&
          usersAccounts.map((acc, idx) => (
            <option value={idx} key={acc.id}>
              {acc.accountNumber}
            </option>
          ))}

使用dataset

const handleSelect = e => {
    const { target } = e;
    setAccount(target.value);
    setAccId(target.dataset.accountid);
  };
  console.log("account", account);
  return (
    <Card width bold>
      New Transaction
      <select
        value={account}
        onChange={e => handleSelect(e)}
        className="transaction__select"
      >
        <option>Choose acc</option>
        {usersAccounts &&
          usersAccounts.map(acc => (
            <option value={acc.accountNumber} data-accountid={acc.id} key={acc.id}>
              {acc.accountNumber}
            </option>
          ))}