7

Tôi mới sử dụng React, vì vậy xin đừng đánh giá nghiêm túc. Tôi đang hiển thị ứng dụng React trên máy chủ và muốn thực thi mã trên giao diện người dùng. Ứng dụng hiển thị đúng với kiểu và không có cảnh báo hoặc lỗi, mặc dù có trạng thái trống vì tôi đang sử dụng API nên thực thi ở mặt trước và hiện tại là OK.Phản hồi bên máy chủ ReactJS và phương thức componentDidMount

như tôi hiểu máy chủ làm cho thành phần và từ máy chủ trả lại và gắn kết thành phần trên máy chủ và nó không được gọi componentDidMount() phương pháp mà nên làm cuộc gọi API của tôi và nhân viên khác

này là thành phần của tôi

import React from 'react'; 
import {render} from 'react-dom'; 
import SpComparison from './spComparison.jsx'; 
import Comparison from './comparison.jsx'; 
import AnalystRatings from './analystRatings.jsx'; 


export default class Insights extends React.Component { 
constructor(props){ 
    super(props); 
    this.state = { 
     charts: [] 
    } 

    let _this = this; 
} 

componentDidMount() { 
    console.log("I want to do log on front end side, but can't") 
} 

render() { 
    let charts = this.state.charts.map(function(i){ 
     if (i.type == 'comparison'){ 
      return <Comparison key={ i.id } config={ i.config } /> 
     } 
     else if (i.type == 'sp-comparison'){ 
      return <SpComparison key={ i.id } config={ i.config } /> 
     } 
     if (i.type == 'analyst-ratings'){ 
      return <AnalystRatings key={ i.id } config={ i.config } /> 
     } 
    }); 

    return (
     <div id="insights" className="container"> 
      <div className="row"> 
       <div className="col-md-3 hidden-md-down" style={{ 
        marginTop: 10 
       }}> 
        <ul className='finstead-tabs'> 
         <li className="finstead-tabs-header"> 
          Categories 
         </li> 
         <li> 
          <a href='' className="finstead-active-tab">Performance</a> 
         </li> 
         <li> 
          <a href=''>Financial</a> 
         </li> 
         <li> 
          <a href=''>Valuation</a> 
         </li> 
         <li> 
          <a href=''>Shares</a> 
         </li> 
         <li> 
          <a href=''>Outlook</a> 
         </li> 
        </ul> 
       </div> 
       <div className="col-xs-12 col-md-9"> 
        { charts } 
       </div> 
      </div> 
     </div> 
    ) 
} 
} 

Tôi đoán tôi đang làm nó không đúng cách, vì vậy hãy giúp tôi.

LƯU Ý

Trong thành phần mức cao nhất tôi đã không gọi ReactDOM.render nó có thể gây ra hành vi này?

tutorial mà tôi sử dụng ví dụ

Trả lời

2

Tôi đã tìm thấy giải pháp sau khi đọc tutorial kỹ lưỡng hơn.

Vấn đề là sự thiếu chú ý của tôi và mọi thứ được mô tả trong hướng dẫn ở trên.

về cơ bản trong tệp được nhóm, bạn nên gọi ReactDOM.render để thực thi lại ứng dụng, nhưng nó sẽ không ảnh hưởng đến hiệu suất vì React sử dụng VirtualDOM và khác với DOM hiện có.

vì vậy mà không cần ReactDOM.render js sẽ không được thực thi.

vì vậy tôi đã tạo tệp riêng biệt app-script.js là điểm nhập cảnh của tôi cho gói và nó gọi thành phần cao nhất của tôi với ReactDOM.render.

+0

Trong trường hợp của bạn, gọi ReactDOM.render sẽ là một vấn đề lớn vì HTML được hiển thị phía máy chủ của bạn không dựa trên trạng thái nào. Tất cả HTML phụ dựa trên trạng thái mà bạn xây dựng phía máy khách sẽ cần phải được phân biệt thành DOM và sẽ mất thêm thời gian. Tôi không hiểu tại sao bạn đang làm rendering phía máy chủ ở đây, tăng tốc độ của bạn là biên. –

+0

Như tôi đã đề cập, tôi vẫn đang học, và hoàn toàn hiểu rằng phía máy chủ hiển thị vô dụng mà không có dữ liệu, vì vậy mọi thứ đều có thời gian, giờ học Redux và hy vọng sẽ tạo trạng thái cho hiển thị bên máy chủ, Cảm ơn bạn! –

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