*getTags({ payload }, { call, put }) {
const response = yield call(getTags, payload); const arr = response.Data && response.Data.length > 0 ? response.Data : []
arr.map(t => {
if (t.Tags.length > 0) {
t.Tags.map(t2 => {
t2.isSelect = false
})
}
}) yield put({
type: 'querySuccess',
payload: {
tagList: arr, // 作为源数据
tagQRList: arr,
tagMtList: arr,
},
});
return response
},

问题:tagList、tagQRList、tagMtList 将会共用一个内存地址,使用引用改变值时会影响另外2个,也即不能达到我们要的效果,以下办法没生效

            yield put({
type: 'querySuccess',
payload: {
tagList: arr,
tagQRList: [].concat(arr),
tagMtList: [].concat(arr),
},
});

以上是浅拷贝的方法:https://www.cnblogs.com/cccj/p/8660888.html

因为我的是需要深拷贝https://blog.csdn.net/qq_37268201/article/details/80448848

以下写法可以解决问题

  yield put({
type: 'querySuccess',
payload: {
tagList: arr, // 作为源数据
tagQRList: JSON.parse(JSON.stringify(arr)), // 深拷贝
tagMtList: JSON.parse(JSON.stringify(arr)), // 深拷贝
},
});

使用dva 的思考的一个问题,数组复制的必要的更多相关文章

  1. 算法题:合并N个长度为L的有序数组为一个有序数组(JAVA实现)

    昨天面试被问到这道算法题,一时没有回答上来,今天思考了一下,参阅了网上的教程,做了一个JAVA版本的实现. 方案一: 新建一个N*L的数组,将原始数组拼接存放在这个大数组中,再调用Arrays.sor ...

  2. c语言经典算法——查找一个整数数组中第二大数

    题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1 ...

  3. php foreach 语法的遍历来源数组如果不是一个有效数组php会出现错误警告 Invalid argument supplied for foreach()

    在php中,foreach语法的遍历来源数组如果不是一个有效数组,php会出现错误警告 Invalid argument supplied for foreach() ,但是很多时候这个数组是取自某些 ...

  4. 【编程题目】一个整数数组,长度为 n,将其分为 m 份,使各份的和相等,求 m 的最大值★★ (自己没有做出来!!)

    45.雅虎(运算.矩阵): 2.一个整数数组,长度为 n,将其分为 m 份,使各份的和相等,求 m 的最大值 比如{3,2,4,3,6} 可以分成 {3,2,4,3,6} m=1; {3,6}{2,4 ...

  5. 把一个一维数组转换为in ()

    把一个一维数组转换为in()形式. function dbCreateIn($itemList) { if(empty($itemList )){ return " IN ('') &quo ...

  6. 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复

    产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复 用一个ArrayList存储1到100然后随机产生0到arraylist.size()之间的数字作为下标然后从arrayli ...

  7. java中将一个字符数组赋值给另一个,两者同时变化

    java中将一个字符数组赋值给另一个,两者的变化怎么是同步的?怎么才能让他们独立开? 比如有一个int[][] a 已经存在值,现在定义int[][] b=a;之后改变a的值,为何b也跟着改变?怎么才 ...

  8. 一个PHP数组能占多大内存

    最近用PHP读取一个大文件把相关数据存放到数组中,之后处理并输出, 读取过程中发现占用内存很大, 于是很好奇这个问题. 简单的写一个代码 <?php $m1 = memory_get_usage ...

  9. 软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)

    题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整型数组,数组里有正数也有负数: 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 求所有子数组的和的最大值.要求时间复杂度为 ...

随机推荐

  1. 明解JAVA 第二章答案

    练习2-1 编译错误,无法运行. 练习2-2 package candle1220; class Nightwatch{ public static void main(String[] args) ...

  2. Taxi Cab Scheme POJ - 2060 二分图最小路径覆盖

    Running a taxi station is not all that simple. Apart from the obvious demand for a centralised coord ...

  3. 设置 VMware 中的 Mac OS 虚拟机进入 Recovery 模式

    Ø  简介 本文主要介绍 VMware 中的 Mac OS 虚拟机如何进入 Recovery 模式的方法,具体步骤如下: 1.   选择 Mac OS 虚拟机,点击"打开电源是进入固件&qu ...

  4. AI与数学笔记之深入浅出的讲解傅里叶变换(真正的通俗易懂)

    原文出处: 韩昊    # 作 者:韩 昊 # 知 乎:Heinrich # 微 博:@花生油工人 # 知乎专栏:与时间无关的故事 # 谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张 ...

  5. Unable to parse composition

    Unable to parse composition When i tried to load gif to my project suddenly return me error: Java.La ...

  6. Kafka Network层解析,还是有人把它说清楚了

    我们知道kafka是基于TCP连接的.其并没有像很多中间件使用netty作为TCP服务器.而是自己基于Java NIO写了一套. 几个重要类 先看下Kafka Client的网络层架构. 本文主要分析 ...

  7. Python常用代码,置顶备用!

    1.jupyter notebook 设置全部行输出: # 设置全部行输出 from IPython.core.interactiveshell import InteractiveShellInte ...

  8. csp 201809-1卖菜

    问题描述 在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜. 第一天,每个商店都自己定了一个价格.店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商 ...

  9. 【转载】Visual Studio2017如何打包发布Winform窗体程序

    在用C#语言编写好Winform窗体程序后,最后一步的操作是将设计好的Winform程序代码进行打包以及发布成安装包.在Visual Studio2017开发工具中,打包发布WinForm程序是比较简 ...

  10. 关于网页布局中常见的margin: 0px ; padding: 0px; 总结

    我们在网页布局中常用到margin: 0px; padding: 0px;  但是在大型的网站布局中通常不这样写通常是按下面这种方式. ul, li, ol, dl, dt, dd, div, p, ...