Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React中多个组件的渲染优先级_Javascript_Performance_Reactjs_Render - Fatal编程技术网

Javascript React中多个组件的渲染优先级

Javascript React中多个组件的渲染优先级,javascript,performance,reactjs,render,Javascript,Performance,Reactjs,Render,在我的React应用程序中,我有一个包含多个子组件的父组件: $Components.ParentComponent = React.createClass({ render: function() { return ( <div> <$Components.FirstChildrenComponent /> <$Components.SecondChildrenComponent />

在我的React应用程序中,我有一个包含多个子组件的父组件:

$Components.ParentComponent = React.createClass({
  render: function() {
     return (
       <div>
         <$Components.FirstChildrenComponent />
         <$Components.SecondChildrenComponent />
       </div>
     );
  }
});

但这只是一个伪代码,只是想知道是否有任何标准的解决方案

据我所知,React将按照组件在渲染函数中出现的顺序渲染组件。据我所知,你在这里的选择是:

1) 将
SecondChildrenComponent
放在渲染函数的第一位。任何由CSS引起的布局问题都可以通过CSS解决,特别是当您使用flexbox时(由于其出色的“order”属性-)

2) 将长时间运行的函数移动到父组件,并在components
componentWillMount()方法中调用它。当然,如果长时间运行的函数首先要求第二个子组件已完成安装,那么这将不起作用


另外,React渲染函数可能只返回一个根组件。您的初始示例包含两个。

可能是对OP问题的更新,但这两个示例都将组件包装在一个
中,因此渲染函数只返回1个根。是的,这看起来像是一个更新。最初它们没有包装在div.AFAIK中,
ReactDOM.render()
用于初始化react树。在第二个伪代码中,将一个嵌套在另一个内部(通过在react代码中包含ReactDOM.render)不是一个好主意。
$Components.ParentComponent = React.createClass({
  render: function() {
     var secondComponent = ReactDOM.render(<$Components.SecondChildrenComponent />);

     return (
       <div>
        <$Components.FirstChildrenComponent />
        {secondComponent}
       </div>
     );
  }
});