【问题标题】:Remove selected element from array从数组中删除选定的元素
【发布时间】:2023-03-05 08:43:01
【问题描述】:

我有输入字段,它接受用户的输入 (interest),然后按 Enter 键interest 添加到 interests 数组中。然后,当用户继续添加时,此数组中的元素通过Domain 组件显示在屏幕上。 Domain 组件包含一个图标 X(十字),单击该图标应从数组中删除选定/单击的元素。现在,数组中的最后一个元素在单击后被删除。

我该如何解决这个问题?代码如下:

function Demo() {
  const [interest, setinterest] = useState("");
  const [interests, setinterests] = useState([]);

  const domainSelection = (e) => {
    if (e.key === "Enter" && interest.length > 0) {
      setinterests((interests) => [...interests, interest]);
      setinterest("");
    }
  };

  const RemoveDomain = (e) => {
    var arr = [...interests];
    var index = arr.indexOf(e.target.value);
    arr.splice(index, 1);
    setinterests(arr);
  };

  const Domain = ({ interest }) => {
    return (
      <span>
        {interest}
        <span>
          <X onClick={RemoveDomain} />
        </span>
      </span>
    );
  };

  return (
    <div>           
          <Input
            name="intersts"
            type="text"
            placeholder="eg Machine Learning .. "
            value={interest}
            required={true}
            onChange={(e) => setinterest(e.target.value)}
            className="interest-input inputs"
            onKeyDown={domainSelection}
          />
          {interests.map((interest, i) => (
            <Domain
              interest={interest}
              // Prevent duplicate keys by appending index:
              key={interest + i}
            />
          ))}
    </div>
  );
}

export default Demo;

【问题讨论】:

    标签: javascript arrays reactjs events state


    【解决方案1】:

    我认为e.target.value 是未定义的。 使用过滤器,这可能会有所帮助

    const RemoveDomain = (value) => {
      var arr = interests.filter((item) => item !== value);
      setinterests(arr);
    };
    
    const Domain = ({ interest }) => {
      return (
        <span>
          {interest}
          <span>
            <X onClick={() => RemoveDomain(interest)} />
          </span>
        </span>
      );
    };
    

    【讨论】:

    • 用你的替换了代码。我收到错误:TypeError: Cannot read property 'value' of undefined
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2016-08-02
    相关资源
    最近更新 更多