javascript – ReactJS服务器端呈现和componentDidMount方法

前端之家收集整理的这篇文章主要介绍了javascript – ReactJS服务器端呈现和componentDidMount方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是React的新手,所以请不要严格判断.
我在服务器上渲染我的React应用程序,并希望在前端执行代码.
应用程序正确地呈现样式并且没有警告或错误,但是由于我使用的API应该在正面执行并且现在可以,因此处于空状态.

据我所知,服务器渲染组件,因为服务器渲染和挂载组件在服务器上,它不调用componentDidMount()方法
应该做我的API调用和其他工作人员

这是我的组成部分

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>
    )
 }
}

我想我做得不对,所以请帮助我.

注意

在最高级别的组件中,我没有调用ReactDOM.render可能会导致此行为吗?

以我用过的tutorial为例

解决方法

我仔细阅读了 tutorial之后找到了解决方案.

问题是我的疏忽,一切都在上面的教程中描述.

基本上在捆绑文件中,您应该再次调用ReactDOM.render来执行应用程序,但它不会影响性能,因为React使用VirtualDOM并与已有的DOM进行区分.

所以如果没有ReactDOM.render,js将不会被执行.

所以我创建了单独的文件app-script.js,这是我的bundle的入口点,它用ReactDOM.render调用我的最高组件.

猜你在找的JavaScript相关文章