首页 > 解决方案 > 拼接后的函数渲染和 setState()

问题描述

我希望我的 React 函数在拼接数组后重新渲染。

这是(部分)功能(使用 Hooks):

function showProblem() {
  const [andArray, setAndArray] = useState([]);

const deleteTag = (i, arr) => {
    let and = andArray;
    switch (arr) {
      case "and":
        and.splice(i, 1);
        setAndArray(and);
        break;
      default:
        return null;
    }
  };


return(
<div>
    {andArray.map((and, i) => {
            return (
              <span
                onClick={() => deleteTag(i, "and")}
                key={i}
              >
                {and}
              </span>
            );
     })}
</div>
)
}

当我单击 SPAN 元素时,我希望我的“andArray.map”再次呈现。

拼接工作正常,我的数组没问题……但函数不会重新渲染。

非常感谢。

标签: javascriptreactjsrendersplice

解决方案


.splice改变数组。React 状态必须是不可变的。不变的方式是:

  setAndState(and.filter((_, i2) => i2 !== i));

推荐阅读