javascript - 我应该在 React 中遵循什么设计模式?

标签 javascript facebook reactjs

我正在创建大约一千多个 svg 元素。当涉及到删除、更新或选择单个元素时,就时间而言是非常昂贵的。因为当我删除或更新特定的 svg 元素时,它会重新呈现 整个父节点及其中的所有子节点。这是添加元素和渲染的代码。

var App = React.createClass({
  getInitialState: function() {
    return {
      propsList: []
      };
   },
  addProps: function(props) {
    var propsList = this.state.propsList.concat([props]);
      this.setState({ propsList: propsList });
        },
  render: function() {
    var components = this.state.propsList.map(function(props) {
      return React.createElement('g', props);
        });
    return React.createElement('div', null, components);
      }
  });
  ReactDOM.render(
      React.createElement(App, null),
      document.getElementById('svg')
    );

请提出一个可以解决我的问题的设计模式。因此,当我添加或删除元素时,父节点不必重新渲染,因为它包含数千个子节点。

最佳答案

您可以尝试缓存元素的呈现,如果它们的呈现确实是减慢您的应用程序的部分:

var App = React.createClass({

  getInitialState: function() {
    return {
      cachedElements: [],
      propsList: []
    };
  },

  addProps: function(props) {
    var propsList = this.state.propsList.concat([props]);
    var cachedElements = this.state.cachedElements.concat([
      React.createElement('g', props)
    ])
    this.setState({ 
      cachedElements: cachedElements,
      propsList: propsList 
    });
  },

  render: function() {
    return React.createElement('div', null, this.state.cachedElements);
  }
});

我没有从状态中删除 propsList,如果组件的渲染中没有使用它,您应该这样做。您可以使用模块变量或组件属性,或者如果您不需要一次访问所有项目,则完全删除它 - 但我想如果您想要完整的 CRUD 操作,您确实需要访问它们。

关于javascript - 我应该在 React 中遵循什么设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34041387/

相关文章:

java - 在 Android 中添加 Facebook 登录依赖项后出错

reactjs - 单击 enzyme 测试中的复选框

javascript - 如何使 Next.js "see"成为 react-dom 包?

javascript - 如何在 Angular2 中取消订阅

javascript - 内部函数和外部函数是否获得相同变量的自己的副本?

javascript - JavaScript 中的多重继承

php - 通过 CURL 发布到 Facebook 页面

javascript - Html2canvas: facebook 插件评论

javascript - 使用 JQuery 将 HTML 表单操作从 'HTTPS' 更改为 'HTTP'

javascript - 选定状态不保留新选定的选项