reactjs - 通过 nodeList 映射
问题描述
所以,我在使用 map() 时遇到了问题。我不知道为什么,但我只有最后一次上市。
let myOptions = {};
const getList = test=> some.current.querySelectorAll(test);
//that will generete nodeList
const list = getList('.list-for-test a');
所以如果我这样映射(我得到了所有的倾听):
Array.from(list).map((e) => console.log(e))
但如果我想从我的收藏中添加一些数据,如下所示:
Array.from(list).map(el => myOptions= {...myOptions, ...{'html': e.innerText, 'href': e.href)
和
console.log(myOptions)
只会给我最后一个输出...
知道我在哪里犯了错误吗?
我需要实现的目标: 1. 收集数据 2. 传递数据
<>
{content ? {myOptions.map((e) =><importedElement href={e.href} html={e.html}/>)} : <Component {...props} />}
</>
解决方案
myOptions
只是一个变量,一个值。每次分配它时,它都会覆盖以前的值。.map(el => {...myOptions, ...{'html': e.innerText, 'href': e.href)
如果你想列出一个清单,就这样做。我假设myOptions
是在.map
. Map 在给定数组上循环,并构建一个新数组,该数组是每个数组返回的结果。我认为你的问题是你试图像each
. 例如
给定一个数组:
var arr = [1, 2, 3, 4]
var newArr = arr.map((val) => val + 1)
这会循环每个值,加一个并将该值返回到新数组,该数组由 map 方法返回并存储在newArr
.
如果您真的想按照自己的方式进行操作,则需要制作myOptions
和排列并将值推送到其中。看起来像这样:
var myOptions = []
list.forEach(val => myOptions.push({'html': e.innerText, 'href': e.href})
但你应该只使用地图。
编辑:因此,根据您的编辑,您需要这样做:
const getList = test=> some.current.querySelectorAll(test);
const list = getList('.list-for-test a');
list = list.map(elem => {'html': elem.innerText, 'href': e.href})
只是为了澄清
推荐阅读
- java - 如何限制(队列)针对给定数据库执行的线程数(每个并发测试的单独数据)?
- python - Python Bs4 不能在双跨该死的文本中包含纯文本
- android - Volley 无法与烧瓶服务器连接
- file - 从 Racket 的目录列表中删除隐藏文件
- module - Magento 2.3.4 Setup_Module
- excel - 如何在保留单元格信息的同时将 Excel 文件转换为 CSV?
- regex - 正则表达式允许单词之间有空格(没有特殊字符)但在开头删除空格
- android - 如何从带有动画的容器中删除片段?
- uwp - H264解码性能不佳
- scala - 在 Spark scala 中更新数据框的最佳方法