javascript - react /预 react : how to temporarily avoid updating the DOM for a certain component?

标签 javascript reactjs webpack preact

我正在使用带有 Webpack 代码分割的服务器端渲染。服务器返回组件的 HTML。然而,当 React 初始化时,由于我使用代码分割,所以我想要渲染的 React 组件尚未下载。通常,我想显示一个加载屏幕。但是,该组件的 HTML 已经呈现,因此我不想用加载屏幕替换它。

有没有办法让 React 暂时忽略组件而不更新 DOM?

该组件看起来像这样:

export default class SomeRoute extends Preact.Component {
  constructor() {
    super();

    this.state = {
      Component: null,
    };
  }

  componentDidMount() {
    if (!this.state.component) {
      this.props.componentLoader().then(Component => this.setState({ Component }));
    }
  }

  render({}, { Component }) {
    if (!Component) {
      return (
        <p>Loading...</p>
      );
    }

    return (
      <Component />
    );
  }
}

<Component />的输出服务器已返回。

最佳答案

您可以使用 shouldComponentUpdate() 。当您返回 false 时,它不会更新组件。

shouldCompnentUpdate(nextprops,nextstate){
    return Boolean(this.state.Component)
}

关于javascript - react /预 react : how to temporarily avoid updating the DOM for a certain component?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54566279/

相关文章:

javascript - 是否可以将动态 React 组件嵌入到单独的 html 文件中,而无需下载文件或使用服务器?

javascript - 在 Webpack 2 中转译

javascript - Rails : Webpacker 4. 2 在/app/public/packs/manifest.json heroku 中找不到应用程序

reactjs - React 上下文应该始终是单例,还是有另一种方式?

javascript - 如何将 bootswatch 主题导入 react-bootstrap?

css - 如何将 SASS 编译成 CSS

javascript - 如何在几秒钟后连续更改 css?

javascript - 如何处理 Facebook javascript SDK 事件?

javascript - 如何使用 javascript console.log 在 ssh 中获得相等的间距

javascript - webapi 后端与纯 javascript 前端,安全