我有以下代码:
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
方法?
答案 0 :(得分:0)
是的,只要您将当前的道具与以前的道具进行比较,这也是进行网络请求的好地方。
您可以在componentDidUpdate()
中立即调用setState(),但是请注意,必须将其包装在条件中。
注意:
componentDidUpdate()
在以下情况下不会被调用shouldComponentUpdate()
返回false。
详细了解componentDidUpdate()。