在componentDidUpdate中触发事件

时间:2019-10-22 09:05:06

标签: javascript reactjs typescript events

我有以下代码:

handleValidate = (value: string, e: React.ChangeEvent<HTMLTextAreaElement>) => {
const { onValueChange } = this.props;
const errorMessage = this.validateJsonSchema(value);

if (errorMessage == null) {
  // it is sure that JsonInputRef.current exists
  this.JsonInputRef.current!.setCustomValidity('');

  onValueChange && onValueChange(value, e);
} else {
  if (this.JsonInputRef.current) {
    this.JsonInputRef.current.setCustomValidity(errorMessage);
  }
}
}

componentDidUpdate(prevProps: JsonInputProps) {
  if (prevProps.value !== this.props.value) {
    this.validateJsonSchema(this.props.value || '');
  }
}

componentDidMount中触发事件是一种好习惯还是更好的实现setTimeout方法?

1 个答案:

答案 0 :(得分:0)

是的,只要您将当前的道具与以前的道具进行比较,这也是进行网络请求的好地方。

可以在componentDidUpdate()中立即调用setState(),但是请注意,必须将其包装在条件中

  

注意:
componentDidUpdate()在以下情况下不会被调用   shouldComponentUpdate()返回false。

详细了解componentDidUpdate()