首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新呈现React js组件

重新呈现React js组件
EN

Stack Overflow用户
提问于 2015-10-13 20:14:16
回答 3查看 2.2K关注 0票数 0

我必须用React js实现现有应用程序的新UI。这是react组件,在单击菜单项后呈现。我注意到用于react的chrome dev tools插件每次点击菜单时都会显示新创建的组件。这不是在浪费内存吗?这是Sammy.js的菜单激活码

代码语言:javascript
复制
this.get('#/security',function(){
        this.swap("");
        React.render(
           <MainComponent/>,
           document.getElementById('content')
       );
    });
EN

回答 3

Stack Overflow用户

发布于 2015-10-13 22:21:06

是的,你应该只React.render一次。尝试如下所示:

代码语言:javascript
复制
React.render(<App />, document.getElementById('content'));

const App = React.createClass({
  getInitialState() {
    return { loaded: false };
  },

  componentDidMount() {
    this.get('#/security',function(){
      this.swap("");
      this.setState({ loaded: true });  
    });
  },

  render() {
    return (
      <div>
        {this.state.loaded ? <MainComponent /> : null}
      </div>
    );
  }
});
票数 5
EN

Stack Overflow用户

发布于 2015-10-14 02:24:42

根据React top-level API documentation的说法

如果ReactElement之前被渲染到容器中,这将对其执行更新,并仅在必要时更改DOM以反映最新的React组件。

因此,重新渲染不应该创建新的组件,而应该更新以前的组件。

根据您的用例,您可能希望处理React应用程序或组件中的菜单单击,并在内部更新状态并重新呈现,但这在您的情况下可能不可能实现。

票数 0
EN

Stack Overflow用户

发布于 2016-05-19 18:39:00

状态更改后的forceUpdate()可能会解决手动呈现组件的问题。

代码语言:javascript
复制
  this.forceUpdate();//manually renders components of each time the state changed
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33102439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档