Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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
Angularjs React的性能问题_Angularjs_Reactjs - Fatal编程技术网

Angularjs React的性能问题

Angularjs React的性能问题,angularjs,reactjs,Angularjs,Reactjs,我读到关于反应非常快的报道。最近,我写了一个应用程序来测试对角度的反应。不幸的是,我发现react的执行速度比angular慢。 下面是react的源代码。我是个新来的人。我确信我的react代码有问题。我发现它异常缓慢。 看看是否有专家能找到瓶颈 更新1: 删除了上下文的用法 更好地使用setState 更好地使用shouldComponentUpdate 我仍然无法使它比角度更快,甚至更接近角度。 更新2: 我犯了一个大错误,在单元组件中创建了二维数组。所以我把他们搬到了一个混音室

我读到关于反应非常快的报道。最近,我写了一个应用程序来测试对角度的反应。不幸的是,我发现react的执行速度比angular慢。

下面是react的源代码。我是个新来的人。我确信我的react代码有问题。我发现它异常缓慢。

看看是否有专家能找到瓶颈


更新1:

  • 删除了上下文的用法
  • 更好地使用setState
  • 更好地使用shouldComponentUpdate
  • 我仍然无法使它比角度更快,甚至更接近角度。


    更新2:

    我犯了一个大错误,在单元组件中创建了二维数组。所以我把他们搬到了一个混音室。现在我相信react在DOM操作中比angular更快。


    更新3:


    我又犯错误了。我做错了,所以速度更快。经过分析,它的渲染不正确。如果有人能帮我理解,如果这能更快。我知道react不擅长处理大型阵列。在这个场景中,它将处理四个3d阵列

    React的表现被夸大了。对于大多数实际用例来说,它足够快。呈现大型列表是它的主要缺点


    此外,它总是返回true(除非更新由setState触发)。你需要比较一下道具

      shouldComponentUpdate: function(nextProps, nextState) {
        return this.props !== nextProps;
      }
    

    你应该在使用上下文的地方使用道具。

    React的性能被夸大了。对于大多数实际用例来说,它足够快。呈现大型列表是它的主要缺点


    此外,它总是返回true(除非更新由setState触发)。你需要比较一下道具

      shouldComponentUpdate: function(nextProps, nextState) {
        return this.props !== nextProps;
      }
    

    您应该在使用上下文的地方使用道具。

    如果您不正确地使用上下文,文档说明:

    特别是,在使用它“保存键入”和使用 它不是传递明确的道具

    它最有利于传递上下文对象,比如当前登录的用户或redux存储。你的应用程序正在使用上下文,而它应该使用道具

    您需要确保
    shouldComponentUpdate
    是一个有意义的谓词。看


    如果你纠正这两件事,它将是一个更好的衡量反应的性能相比,角度。目前,你有一辆经过良好调整的法拉利与T型福特(用口香糖固定在一起)进行比赛

    您使用的上下文不正确,文档说明:

    特别是,在使用它“保存键入”和使用 它不是传递明确的道具

    它最有利于传递上下文对象,比如当前登录的用户或redux存储。你的应用程序正在使用上下文,而它应该使用道具

    您需要确保
    shouldComponentUpdate
    是一个有意义的谓词。看


    如果你纠正这两件事,它将是一个更好的衡量反应的性能相比,角度。目前,你有一辆经过良好调整的法拉利与T型福特(用口香糖固定在一起)进行比赛

    我认为这是一个非常做作的例子

    • 如上所述,您不正确地使用了上下文
    • 不需要mixin:列和行的数量可以而且应该作为道具传递
      create2DArray
      getRandomNumber
      应在脚本顶部声明为简单全局函数
    • 您设置的状态不正确。您不应该像这样更改状态
      this.state.some='whatever'
      ,您必须使用
      setState

      this.setState({some:'whatever'})


      • 我认为这是一个非常做作的例子

        • 如上所述,您不正确地使用了上下文
        • 不需要mixin:列和行的数量可以而且应该作为道具传递
          create2DArray
          getRandomNumber
          应在脚本顶部声明为简单全局函数
        • 您设置的状态不正确。您不应该像这样更改状态
          this.state.some='whatever'
          ,您必须使用
          setState

          this.setState({some:'whatever'})


        我不知道上下文是否会降低性能。但我发现上下文非常有用。如果我想将信息从父母传递给孙子,而不首先传递给孩子,我可以使用上下文来实现。如果我有一个更复杂的层次结构,我不想将信息传递给所有子节点,即使我的意思是仅为孙子节点传递信息。@user730009上下文不用于将数据传递给整个树,而是用于将不经常更改的数据传递给整棵树。如果您的上下文数据发生更改,您应该非常小心地更新整个树,因为不会触发重新渲染。如果你想把数据传递给一个没有样板的深孩子,你应该考虑流量或重复,也不是最好的渲染列表,但有一些潜在的优化还没有被实验过。我在这里做了一些工作:我不知道上下文是否会降低性能。但我发现上下文非常有用。如果我想将信息从父母传递给孙子,而不首先传递给孩子,我可以使用上下文来实现。如果我有一个更复杂的层次结构,我不想将信息传递给所有子节点,即使我的意思是仅为孙子节点传递信息。@user730009上下文不用于将数据传递给整个树,而是用于将不经常更改的数据传递给整棵树。如果您的上下文数据发生更改,您应该非常小心地更新整个树,因为不会触发重新渲染。如果你想把数据传递给一个没有样板的深孩子,你应该考虑流量或重复,也不是最好的反应。