小编Nie*_*ier的帖子

ReactJS中的非阻塞渲染

我正在学习ReactJS并尝试在其上构建一些应用程序.

当我试图修改我的状态并进行渲染时,我的页面会冻结,并且在我的组件变得庞大时渲染完成之前无法执行任何操作.

我发现我可以shouldComponentUpdate用来优化我的代码,但问题是:我能否使这个渲染过程无阻塞?所以我可以告诉用户该页面正在处理一些繁重的加载执行,请等待或者显示执行的进度?或者,如果用户可以取消渲染,例如,对于实时编辑器,如果用户编辑编辑器的内容,"预览"部分将停止渲染旧内容并尝试渲染新内容而不阻止编辑器UI?

这是重载示例代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>React Tutorial</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.1/react-dom.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
  </head>
  <body>
    <div id="content"></div>
    <script type="text/babel">
      var Box = React.createClass({
        render: function() {
          return (
            <div>Box</div>
          );
        }
      });
      
      var CommentBox = React.createClass({
        getInitialState: function() {
          return {box_count: 5};
        },
        
        heavyLoadRender: function() {
          this.setState({box_count: 40000});
        },
        
        render: function() {
          var render_box = [];
          for (var i=0; i<this.state.box_count; i++) {
            render_box.push(<Box />);
          }
          return (
            <div>
              {render_box}
              <button …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

6
推荐指数
1
解决办法
2785
查看次数

如果网格的宽度大于其父级的 100%,则具有粘性左列的 CSS 网格将滚动

我有一个带有粘性左右列的 CSS 网格,如下所示:

.grid {
  display: grid;
  grid-template-columns: repeat(10, 200px);
}

.grid > div {
  border: 1px solid black;
  background-color: white;
}

.sticky-left {
  position: sticky;
  left: 0;
}

.sticky-right {
  position: sticky;
  right: 0;
}
Run Code Online (Sandbox Code Playgroud)
<div class="grid">
  <div class="sticky-left">Sticky Left</div>
  <div>1</div>
  <div>1</div>
  <div>1</div>
  <div>1</div>
  <div>1</div>
  <div>1</div>
  <div>1</div>
  <div>1</div>
  <div class="sticky-right">Sticky right</div>
</div>
Run Code Online (Sandbox Code Playgroud)

右列按预期工作:始终显示在右侧。

然而,左列的行为很奇怪:它会在大约 50% 网格宽度后向左滚动,这不是预期的结果。如果我想让左栏粘在左侧而不是滚动,该怎么办?

html css css-grid

3
推荐指数
1
解决办法
6427
查看次数

标签 统计

css ×1

css-grid ×1

html ×1

javascript ×1

reactjs ×1