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来获得帖子。但我真的很喜欢这个变体。