React 操作对象数组props ,需要深拷贝吗?

类似 [{},{},{}] 的props,进行增删改,如果是浅拷贝。内部的object,依然还是原来的引用,是否需要先进行一次 Deep clone,…
关注者
5
被浏览
6,591
登录后你可以
不限量看优质回答 私信答主深度交流 精彩内容一键收藏

在 React 中,如果您在函数式组件或 class 组件中修改 props 中的对象或数组,这将违反 React 的不可变性原则,并可能导致不可预测的行为。因此,建议不要直接修改 props 中的对象或数组。

如果需要对 props 中的对象或数组进行操作,可以进行深拷贝来避免修改原始的 props 对象。这是因为深拷贝将创建一个新的对象或数组,而不是引用原始对象或数组,因此可以安全地进行修改。

您可以使用诸如 lodash 或 immer 这样的工具库来方便地进行深拷贝,或者手动编写代码来进行深拷贝。以下是使用 JavaScript 手动实现深拷贝的示例代码:

function deepCopy(obj) {
  if (typeof obj !== "object" || obj === null) {
    return obj;
  let copy = Array.isArray(obj) ? [] : {};
  for (let key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      copy[key] = deepCopy(obj[key]);