React Redux生成的无状态组件性能

闲逛

我正在学习redux并做出反应。我决定运行一个简单的“压力测试”,用15k行的生成组件(我希望我做对了)。

因此,我有无状态组件,可以接收通用的道具,例如“ year”。我想克隆这个无状态组件超过9000次并更新它们。例如,将其prop(year)从2016更改为2015。

我在测试项目中构建了该组件,并且可以正常工作,但是响应速度很慢,尤其是在IE 11中。我是React + redux的新手,也许我的代码做错了什么。

正如在不和谐聊天室中所建议的那样,我已经添加到我的Page组件中:


    shouldComponentUpdate(nProps,nState){
        返回nProps.year!= this.props.year;
      }

这确实有所帮助。但是它仍然很慢。

还作为相关问题-可以使用lodash.assign()更新我的状态吗?我也正在使用打字稿,它似乎没有为Object.assign()内置的polyfill;这就是为什么我决定尝试lodash的原因。

所以这是我最基础的组件app.tsx:

import * as React from 'react';
import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import * as pageActions from '../actions/page';

import User from '../components/user/User';
import Page from '../components/page/Page';

class App extends React.Component<any, any> {

  render() {
    const { user, page } = this.props;
    const { setYear } = this.props.pageActions;

    return (
      <div>
        <User name={user.name} />
        <Page photos={page.photos} year={page.year} setYear={setYear} />
      </div>
    );
  };
}

function mapStateToProps (state) {
  return {
    user: state.user, // (1)
    page: state.page // (2)
  };
}

function mapDispatchToProps(dispatch) {
  return {
    pageActions: bindActionCreators(pageActions, dispatch)
  };
}

export default connect(
  mapStateToProps,
  mapDispatchToProps
)(App);

这是我的页面缩减器:

import {assign} from 'lodash';


const INITIAL_STATE = {
  year: 2016,
  photos: []
};

function pageReducer(state = INITIAL_STATE,
                        action = {type: '', payload: null}) {
  switch (action.type) {
    case 'SET_YEAR':

    return assign({}, state, {year: action.payload});
    default:
      return state;
  }
}

export default pageReducer;

和Page组件:

import * as React from 'react';
import {range} from 'lodash';

let StatelessSpan: React.StatelessComponent<any> = (props) => (
    <span>{props.year} </span>
);

class Page extends React.Component<any, any> {

  constructor(props) {
    super(props);
  }

  private onYearBtnClick = (e) => {
    this.props.setYear(+e.target.innerText);
  };
  shouldComponentUpdate(nProps, nState) {
    return nProps.year != this.props.year;
  }

  render() {
    const {year, photos} = this.props;

    let years = range(15000).map((value, index) => {
      if(index % 4===0){
        return <StatelessSpan key={index} year={year} />;
      }
      return <span key={index}>i am empty</span>
    });

    return <div>
      <p>
        <button onClick={this.onYearBtnClick}>2016</button>
        <button onClick={this.onYearBtnClick}>2015</button>
        <button onClick={this.onYearBtnClick}>2014</button>
      </p>
      {years}
    </div>;
  };
}

export default Page;

有人告诉我,innerText是实验性的并且不稳定,因此我将其更改为textContent。IE浏览器仍然延迟。

闲逛

我在这里找到了这个讨论:https : //twitter.com/mweststrate/status/720177443521343488

因此,这部分地回答了我有关性能的问题,并很好地了解了这两个库在我的情况下的行为。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在没有shouldComponentUpdate的情况下,React 0.14的无状态组件将如何提高性能?

来自分类Dev

React 中的无状态功能组件 (SFC) 未响应来自 Redux 的道具

来自分类Dev

React Proptypes-无状态组件

来自分类Dev

在无状态React无状态组件中使用Hooks存储不可观察数据的最佳方法

来自分类Dev

React无状态组件中的箭头函数语法

来自分类Dev

React无状态功能组件中的If-else

来自分类Dev

如何在Typescript中编写React无状态功能组件?

来自分类Dev

在无状态功能组件中进行React Router Redirect

来自分类Dev

添加输入字段onClick无状态组件React Electron

来自分类Dev

在React无状态组件中定义函数可以吗?

来自分类Dev

React - 在无状态组件安装上触发操作

来自分类Dev

在 React 中通过 ref(或键)访问无状态组件

来自分类Dev

React:从无状态组件返回迭代列表

来自分类Dev

React、Typescript 中无状态功能组件内的事件处理

来自分类Dev

将无状态转换为类组件 react js

来自分类Dev

呈现无状态组件时出错:“找不到变量:React”

来自分类Dev

将 props 传递给高阶无状态功能 React 组件

来自分类Dev

将数组传递给 React 无状态组件

来自分类Dev

Typescript无状态HOC react-redux注入的道具打字

来自分类Dev

如何在React中将数据从无状态子组件发送到无状态父组件?

来自分类Dev

React Redux传递状态作为组件的道具

来自分类Dev

无法从redux接收react组件中的状态

来自分类Dev

从 Redux 状态属性渲染 React 组件

来自分类Dev

子组件的 React-Redux 缩小状态

来自分类Dev

将 Redux 状态传递给 React 组件

来自分类Dev

React: TypeError: _ref undefined - 从无状态组件转换为基于类的组件时

来自分类Dev

组件中的 React-Redux 状态与 store 中的状态不同

来自分类Dev

react-redux 更新 redux 存储但不更新组件状态

来自分类Dev

使用 react-router 时,是否有不同的方式将 props 从有状态组件传递到无状态组件

Related 相关文章

  1. 1

    在没有shouldComponentUpdate的情况下,React 0.14的无状态组件将如何提高性能?

  2. 2

    React 中的无状态功能组件 (SFC) 未响应来自 Redux 的道具

  3. 3

    React Proptypes-无状态组件

  4. 4

    在无状态React无状态组件中使用Hooks存储不可观察数据的最佳方法

  5. 5

    React无状态组件中的箭头函数语法

  6. 6

    React无状态功能组件中的If-else

  7. 7

    如何在Typescript中编写React无状态功能组件?

  8. 8

    在无状态功能组件中进行React Router Redirect

  9. 9

    添加输入字段onClick无状态组件React Electron

  10. 10

    在React无状态组件中定义函数可以吗?

  11. 11

    React - 在无状态组件安装上触发操作

  12. 12

    在 React 中通过 ref(或键)访问无状态组件

  13. 13

    React:从无状态组件返回迭代列表

  14. 14

    React、Typescript 中无状态功能组件内的事件处理

  15. 15

    将无状态转换为类组件 react js

  16. 16

    呈现无状态组件时出错:“找不到变量:React”

  17. 17

    将 props 传递给高阶无状态功能 React 组件

  18. 18

    将数组传递给 React 无状态组件

  19. 19

    Typescript无状态HOC react-redux注入的道具打字

  20. 20

    如何在React中将数据从无状态子组件发送到无状态父组件?

  21. 21

    React Redux传递状态作为组件的道具

  22. 22

    无法从redux接收react组件中的状态

  23. 23

    从 Redux 状态属性渲染 React 组件

  24. 24

    子组件的 React-Redux 缩小状态

  25. 25

    将 Redux 状态传递给 React 组件

  26. 26

    React: TypeError: _ref undefined - 从无状态组件转换为基于类的组件时

  27. 27

    组件中的 React-Redux 状态与 store 中的状态不同

  28. 28

    react-redux 更新 redux 存储但不更新组件状态

  29. 29

    使用 react-router 时,是否有不同的方式将 props 从有状态组件传递到无状态组件

热门标签

归档