javascript - 优化 React 代码
问题描述
有没有机会让这个代码干燥?
let allPosts = this.state.posts.map((item, i, arr) => {
if (i === arr.length - 1) {
return <Post
key={item._id}
post={item}
nickname={this.props.nickname}
ref={this.lastPostRef}
/>
}
return <Post
key={item._id}
post={item}
nickname={this.props.nickname}
/>
});
完美的解决方案是
...
nickname={this.props.nickname}
if (i === arr.length - 1) {
ref={this.lastPostRef}
} ...
但它在 React 中不起作用。
解决方案
有一种更简洁的方法可以在没有任何条件的情况下执行此操作:
let allPosts = this.state.posts.map((item, i, arr) => {
return <Post
key={item._id}
post={item}
nickname={this.props.nickname}
ref={el => this.lastPostRef = el}
/>
});
在循环的每次迭代中,最后一个 post ref 将使用最新的元素进行更新。在地图结束时,最后一篇文章将被设置为最后一篇文章参考。魔法!
推荐阅读
- java - 为什么 selenium 只点击第一行代码而不点击另外两行?
- php - 无法理解嵌套多次数组的逻辑
- python - 如何避免用户在登录 o365 时必须重新输入密码?
- javascript - 在 vue JS 中使用索引从数组中删除一个项目会返回一个意外的结果
- python - 如何在熊猫中为列名分配上级名称(通用标题)
- google-cloud-platform - 数据流设置控制器服务帐户
- java - 文件下载百分比达到 74%
- xamarin - 列表项的任何属性更改时列表视图不刷新
- angular6 - 如何将表格行数据传递给弹出模式?
- android - Android Rotate Animation 没有完全旋转