前端 在控制台打印的数组长度为2 ,查看数组无数据且length为0,再使用useState将打印的数组数组传递给子组件为[]?

文章讲述了在使用Taro、React和函数组件开发中,A组件通过父组件传递数据时遇到的问题,即数据在不同组件间传递时长度显示正确但实际内容缺失。解决方法是通过JSON.stringify确保数据在传递过程中保持原样。遗留问题是为何筛选后的数组在控制台显示为空和解析策略背后的原理。
摘要由CSDN通过智能技术生成

前言

        使用技术栈:taro、react、函数组件写法;

问题描述:

        平行组件中通过父组件进行数据共享,A组件传递数据到父组件,父组件通过useState 变量的方式传递给B组件,结果发现在A组件进行数据传递时console打印出的数据(数组),有长度 且显示[{...},{...}],但点开数组时,length为0,传递到父组件的数据打印显示的也是[{...},{...}],再又由父组件通过useState的方式传递给B组件数据为[]。(A、B是属于父组件的兄弟组件);

A组件数据处理:

 打印结果:

分析:

        子组件A传递给父组件的数据打印出来与子组件A表示,数据是正常传递了的

        在数据源头上分析:当不对数据进行处理直接在filter函数中return true时,数据能正常显示在控制台上,点开数组仍有数据;但是判断不能不要,打印出的[{..},{..}] 和长度,表示数据还是进行了过滤且打印了出来。故查询点开length为0  得知:

        要想控制台打印的对象保持“原样”,先JSON.stringify一下 再打印;

        控制台输出的是一个静态的快照,而当你点击数组去查看里面的详情时,看到的是实时更新后的数组。如果你还不理解 ,可以想象这样的一个场景,好比如你在看一个视频,你用截图工具截了其中某个画面,但是你没有按暂停键,过一会之后 ,你会发现刚刚截图的画面和当前播放的画面不一样了,其实是一样的道理的。

        https://www.zhihu.com/question/454421006/answer/1834149977

由此在数据源上进行JSON.stringify 确实打印出来筛选后的数据,故在数据传递到父组件也是用JSON.stringify查看传递的数据也能显示数据原样;

解决方案:

        根据JSON.stringify能还原数据,故在useState之前是用JSON.pares(JSON.stringfy()) 能将数据完整的传递给子组件B;

遗留问题;

        1. 关于使用判断后筛选的数据打印出来的数组,查看数组无数据且length:0 的问题;

        2. 使用JSON.pares(JSON.stringfy())  为什么能将数据还为原样?

以上遗留问题欢迎大家解答,在后续中有解答后作者会持续更新~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值