2017-07-10 23 views
9

Mọi thứ hoạt động tốt, nhưng tôi có cảnh báo này Expected to return a value at the end of arrow function array-callback-return, tôi thử sử dụng forEach thay vì map, nhưng sau đó <CommentItem /> thậm chí không hiển thị. Làm thế nào sửa chữa nó?Dự kiến ​​trả về giá trị ở cuối chức năng mũi tên

return this.props.comments.map((comment) => { 
 
    
 
     if (comment.hasComments === true) { 
 
     
 
     return (
 
      <div key={comment.id}> 
 
      
 
      <CommentItem className="MainComment"/> 
 

 
       {this.props.comments.map(commentReply => { 
 
       
 
       if (commentReply.replyTo === comment.id) { 
 
        return (
 
        <CommentItem className="SubComment"/> 
 
       ) // returnt 
 
       } // if-statement 
 
       }) // map-function 
 
       } // map-function __begin 
 
      
 
      </div> // comment.id 
 
      
 
     ) // return

+0

Có khoản lợi nhuận nào khác nếu bạn không tham gia không? – epascarello

+2

Bạn chỉ trả về nếu 'commentReply.replyTo === comment.id'. Nếu đó không phải là trường hợp, bạn không trả lại bất cứ điều gì. Chỉ cần đặt 'return null' sau khối' if' –

+0

Mikael Lennholm, tôi có thể nói, bạn là thiên tài –

Trả lời

15

Cảnh báo chỉ ra rằng bạn không trở về một cái gì đó ở phần cuối của bản đồ mũi tên chức năng của bạn trong mọi trường hợp.

Một cách tiếp cận tốt hơn với những gì bạn đang cố gắng để hoàn thành là lần đầu tiên sử dụng một .filter và sau đó một .map, như thế này:

this.props.comments 
    .filter(commentReply => commentReply.replyTo === comment.id) 
    .map((commentReply, idx) => <CommentItem key={idx} className="SubComment"/>); 
2

Vấn đề dường như được rằng bạn không phải trở về một cái gì đó trong trường hợp if-chữ cái đầu tiên của bạn là sai.

Lỗi bạn nhận được cho biết rằng chức năng mũi tên của bạn (comment) => { không có câu lệnh trả về. Trong khi nó làm cho khi bạn if -case là đúng, nó không trả lại bất cứ điều gì cho khi nó là sai.

return this.props.comments.map((comment) => { 
    if (comment.hasComments === true) { 
    return (
     <div key={comment.id}> 
     <CommentItem className="MainComment" /> 
     {this.props.comments.map(commentReply => { 
      if (commentReply.replyTo === comment.id) { 
      return (
       <CommentItem className="SubComment"/> 
      ) 
      } 
     }) 
     } 
     </div> 
    ) 
    } else { 
    //return something here. 
    } 
}); 

chỉnh sửa bạn nên có một cái nhìn tại Kris' câu trả lời về cách thức để thực hiện tốt hơn những gì bạn đang cố gắng làm.

1

A map() tạo một mảng, do đó, return được mong đợi cho tất cả các đường dẫn mã (if/elses).

Nếu bạn không muốn mảng hoặc trả lại dữ liệu, hãy sử dụng forEach để thay thế.

Các vấn đề liên quan