简体   繁体   中英

react js array.map issue

class TicketDetails extends React.Component{
constructor(props){
    super(props)
    this.state ={
        datatra : '',
        display:false,
        action_id:'',
        conversation:[]
       }
}

componentWillMount(){
    this.props.fetchHeader();
    this.props.fetchEmail();
    this.getMessage();
}

getMessage = () =>{
    console.log(this.props.content);
}


componentDidMount () {



 }




onButtonPress = () => {
    console.log(this.state.data);
    this.props.pushUpdateFlag(this.state.data);
}



render(){

    const trailMessage = this.props.content.map((list,index)=>(
        <ul className="listview" key={index}>
             <li>
              <div className="item">{}{list.to}</div>
              <div className="item">{list.sender}</div>
              <div className="item">{list.subject}</div>
              <div className="sub-item">{list.email_body[1]}</div>
              <div className="sub-item">{list.email_data}</div>
              <div className="sub-item">{list.unseen}</div>
            </li>
        </ul>));

    const ticketData = this.props.header.map((list,index)=>(
        <nav key={index} className="ticket-detail-status">
         <div className="ticket-detail-status-1">
         <ul>
             <li>Ticket/# <span><strong>{list.number}</strong></span></li>
             <li>
             <select className="ticket-status-dropdown" onChange={this.onSelectChange}>
                 <option value="Open">Open</option>
                 <option value="Acknowledged">Acknowledged</option>
                 <option value="In Progress - Customer Response Recieved">In Progress - Customer Response Recieved</option>
                 <option value="In Progress - Customer response Awaited">In Progress - Customer response Awaited</option>
                 <option value="Closed">Closed</option>
                 <option value="Cancelled">Cancelled</option>
                 <option value="Complete">Complete</option>
            </select>
            <Link to="/select"><Button  onClick={this.onButtonPress} className={"ticket-detail-btn"} content={"UPDATE"}/></Link>
             </li>
         </ul>
         </div>
         <div className="ticket-detail-status-2">
           <ul className="ticket-details-info">
              <li>current state : <span>open</span></li>
              <li>Open Date : <span>{list.creation_date}</span></li>
              <li>Agent name : <span>{list.agent}</span></li>
           </ul>
           <ul className="ticket-details-info">
            <li>Total conversation : <span>6</span></li>
            <li>Closed Date : <span>10/12/18</span></li>
            <li>SLA : <span>80%</span></li>
           </ul>
         </div>
         </nav>
    ));

      if(this.props.content.length === 0){
        return(<Loader/>)
    }else{
        return(
            <div className="ticket-details">
            {ticketData}
            <div className="conversation-view-selector">
              <div className="conversation-view-filter">
              <ul>
                  <li>view</li>
                  <li>
                      <select className="select-view">
                          <option value="conversation">conversation</option>
                          <option value="state">state</option>
                          <option value="sla">sla</option>
                      </select>
                  </li>
                  <li>sort</li>
                  <li>
                      <select className="select-view">
                          <option value="conversation">select</option>
                          <option value="state">ascending</option>
                          <option value="sla">descending</option>
                      </select>
                  </li>
              </ul>
              </div>
              <div className="conversation-list-populater">
              <div className="conversation-list-populater-open">
              <span className="conversation-list-populater-flags">open</span>
              </div>
               {trailMessage}
                <div className="conversation-list-populater-close">
                <span className="conversation-list-populater-flags">close</span>
                </div>
              </div>
           </div>
           <div className="conversation-view">
           <section className="conversation-view-display">
                  <div className="conversation-view-display-compose">
                      <div className="conversation-view-display-compose-closure">
                          <span><i className="fa fa-times"></i></span>
                      </div>
                      <div className="conversation-view-display-message-form">
                          <form className="conversation-view-display-message-form">
                              <ul>
                                  <li><input type="mail" placeholder="From" name='email'/></li>
                                  <li><input type="mail" placeholder="Date" name='CC'/></li>
                                  <li><input type="mail" placeholder="T0" name='BCC' /></li>
                                  <li><input type="text" placeholder="CC" name='Subject'/></li>
                              </ul>
                              <div className="attachements-counter-placeholder">
                                  Attchements
                              </div>
                              <div className="conversation-view-display-mail-text-area">
                                  {/* <textarea placeholder="Please Pen Here"></textarea> */}
                              </div>
                              <ul className="conversation-view-display-files-men">
                                  <li><i className="fa fa-paperclip"></i></li>
                                  <li><i className="fa fa-link"></i></li>
                              </ul>
                          </form>
                      </div>
                  </div>
              </section>
           </div>
          </div>
)

Error

Objects are not valid as a React child (found: object with keys {body}). If you meant to render a collection of children, use an array instead.

I am not able to understand this error, as I have used this method of mapping multiple arrays in form of HTML earlier. If possible, could anyone please tell me the issue?

Your code looks correct and as you mentioned in the comments the error in email_body line.

You can fix the problem by making sure email_body is an array and have elements inside of it

You can change

  <div className="sub-item">{list.email_body[1]}</div>

To

  <div className="sub-item">{list.email_body.length >= 1 && list.email_body[1]}</div>

It will fix the problem

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM