繁体   English   中英

如何在状态值中保存 React 子组件是有效的?

[英]How can saving React Child Components inside state value be efficient?

我正在做一些需要动态添加反应子组件的项目。 虽然这项任务似乎很容易完成,但我担心我的方法的效率。 我在网上冲浪,发现了几个与我的设计模式相同的解决方案。 不过,我怀疑自己的效率。

下面是我的例子:

class Container extends Component{

    constructor(props){
      super(props)
      this.state = {
         children: []
      }
      this.addChild = this.addChild.bind(this)
    }

    addChild(){
      this.setState({
        children: [...this.state.children, 
                   <div> 
                      <h1> My number is {this.state.children.length} </h1>
                   </div>]
      })
    } 

    render() {
      return
            <div>
                <button onClick={this.addChild}> Add child </button>
                {this.state.children.map( child => child)}
            </div>
    }
}

这个例子非常简单。 但是当你有一个复杂的结构,其中组件有其他改变状态的组件,有事件侦听器和深层结构,组件的状态值将包含大量代码,这个组件将在每次添加时重新渲染所有内容。 第 100 次添加时,它将进行99 次不必要的重新渲染。

当然,我可以使用Vanilla JSJQuery来附加新组件,但我认为这不是明智的决定。 我想保持一致性并使用 React 工具解决问题。

你怎么看? 你会建议什么模式?

好的,我自己已经找到了这个问题的答案。 尽管React在每次状态 更改时都调用render 函数 ,但它不会重新渲染不必要的组件。

3 年后,我发现这种方法很糟糕。 应该将状态值存储在数组中并在渲染函数中迭代它们。 不仅代码看起来更清晰,而且内存使用量也会减少。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM