Javascript 优化React代码
有没有可能使这个代码变干Javascript 优化React代码,javascript,arrays,reactjs,dry,Javascript,Arrays,Reactjs,Dry,有没有可能使这个代码变干 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} /> } retur
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}
/>
});
但是它在React中不起作用。为什么不让属性不定义呢
return <Post
key={item._id}
post={item}
nickname={this.props.nickname}
ref={ i === arr.length - 1 ? this.lastPostRef : undefined }
/>
为什么不让属性不定义呢
return <Post
key={item._id}
post={item}
nickname={this.props.nickname}
ref={ i === arr.length - 1 ? this.lastPostRef : undefined }
/>
有一种更干净的方法可以做到这一点,无需任何条件:
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将用最新的元素更新。在地图的末尾,最后一个帖子将被设置为最后一个帖子参考魔法 有一种更干净的方法可以做到这一点,而无需任何条件:
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将用最新的元素更新。在地图的末尾,最后一个帖子将被设置为最后一个帖子参考魔法 ref={i===arr.length-1&&this.lastPostRef}应该做ref={i==arr.length-1&&this.lastPostRef}应该做它的可能重复。这是一个真正的魔法,因为我现在不明白为什么我可以用this.lastPostRef和this.lastPostRef.current来获得帖子。但我真的很喜欢这个变体。这是一个真正的魔法,因为我现在不明白为什么我能用this.lastPostRef和this.lastPostRef.current来获得帖子。但我真的很喜欢这个变体。