【问题标题】:Function render after splice and setState()拼接后的函数渲染和 setState()
【发布时间】:2019-09-26 02:01:53
【问题描述】:

我希望我的 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”再次呈现。

拼接工作正常,我的数组没问题...但是函数没有重新渲染。

非常感谢。

【问题讨论】:

    标签: javascript reactjs render splice


    【解决方案1】:

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

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

    【讨论】:

    • 它有效...你能解释一下你正在比较的“i2”吗?无论如何还是非常感谢!...明白了,这只是你给索引变量的名字。谢谢:)
    • 他需要排除数组中特定索引i的项,所以当i2 === i时,该元素应该被排除,这就是为什么他用条件i2 !== i过滤数组的原因
    猜你喜欢
    • 2023-04-01
    • 2019-04-16
    • 2017-11-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    相关资源
    最近更新 更多