javascript - 在 Set() 对象上反应 JSX 循环
问题描述
我想使用 Set 对象来存储唯一值。但默认情况下,我们不能使用 Set.map() 在 React 和 JSX 中对 Set 值进行循环。
但是通过这个技巧,我可以将 Set 存储到状态中并对其进行循环:
<ul>
{
Array.from(this.state.mySet).map((item, index) => (
<li key={index}>{item}</li>
))
}
</ul>
那么,上述技巧是否正确和处理此问题的最佳实践?
在性能和概念方面......
谢谢
解决方案
这很好,但只有在 state 属性被替换而不是突变/浅比较时,react 才会识别状态更改。您必须使用旧集创建新集,然后对其应用更改。这样您就不必强制更新状态。
export default class Test extends React.Component {
constructor(props) {
super(props);
this.state = {
mySet: new Set()
}
this.add = this.add.bind(this);
}
add(item) {
this.setState(({ mySet }) => ({
mySet: new Set(mySet).add(item)
}));
}
/*
.
.
. Other code
.
. */
}
希望这可以帮助 !
推荐阅读
- angular - Angular 8:“typeof Observable”类型上不存在属性“of”
- openssl - OpenSSL Libarary:ECDSA:如何将未压缩的公钥转换为压缩的`
- r - 如何在 R 中不使用均值函数计算均值?
- vba - 按存储在用户定义字段中的用户名过滤共享收件箱邮件
- tfs - 如何将 Visual Studio 2019 连接到 TFS 服务器
- javascript - 如何从网站 HTML 页面中删除速度加载页面?
- ios - 阅读正念分钟
- mongodb - PyMongo - 从具有最大值的数组中选择对象
- python - 全局变量未在 Django 视图中更新
- mysql - [错误][服务器] 你是否已经在端口:3306 上运行了另一个 mysqld 服务器?