问题覆盖pureComponent的shouldComponentUpdate

时间:2018-11-05 17:32:39

标签: javascript reactjs override

例如,我想写这样的东西:

class MyComponent extends PureComponent {
  shouldComponentUpdate(nextProps, nextState, nextContext) {
    console.log('shouldComponentUpdate');
    return super.shouldComponentUpdate(nextProps, nextState, nextContext);
  }
}

但是super.shouldComponentUpdate未定义。

  1. 为什么未定义super.shouldComponentUpdate?
  2. 如何调用PureComponent的默认实现?

反应16.0.0

3 个答案:

答案 0 :(得分:1)

在大多数情况下,PureComponent等效于通过对当前属性和先前的props和状态进行浅比较来实现shouldComponentUpdate()。 但是,如果您想手动编写shouldComponentUpdate(),则可以从React.Component继承。

答案 1 :(得分:1)

进一步扩大Victor的回应。 PureComponent和Component在react中的区别在于,纯组件通过对props和state进行浅层比较来处理shouldComponentUpdate。

如果您想提供一个自定义的shouldComponentUpdate来处理何时以及何时不应该更新组件,我建议您仅使用常规组件。我还要指出,PureComponent和Component都需要一个构造函数,该构造函数将super()调用作为第一行。

答案 2 :(得分:-1)

1)PureComponent实际上doesn't实现了foreach,因此React文档是lying

2)接近默认实现:

@foreach (var p in Model)
{
    @Html.TextBoxFor(x => x.OrdenDeCompras, new { @class = "form-control obligatorio "})
}