diff --git a/frontend/src/org/jetbrains/react/ReactComponent.kt b/frontend/src/org/jetbrains/react/ReactComponent.kt index 82bb327..a9049e9 100644 --- a/frontend/src/org/jetbrains/react/ReactComponent.kt +++ b/frontend/src/org/jetbrains/react/ReactComponent.kt @@ -93,7 +93,7 @@ abstract class ReactComponent

: ReactExtensionProvider { } - open fun componentDidUpdate(prevProps: P, prevState: S) { + open fun componentDidUpdate(prevProps: RProps, prevState: RState) { } @@ -185,7 +185,10 @@ class ReactComponentWrapper(var props: P, val updater } @JsName("componentDidUpdate") - fun componentDidUpdate(prevProps: P, prevState: S) { + fun componentDidUpdate(prevProps: RProps, prevState: RState) { + subscribers.forEach { + it.reactComponentDidUpdate(prevProps, prevState) + } delegate.componentDidUpdate(prevProps, prevState) } diff --git a/frontend/src/org/jetbrains/react/ReactExtensions.kt b/frontend/src/org/jetbrains/react/ReactExtensions.kt index 9052052..0e2cf47 100644 --- a/frontend/src/org/jetbrains/react/ReactExtensions.kt +++ b/frontend/src/org/jetbrains/react/ReactExtensions.kt @@ -6,6 +6,8 @@ import kotlin.reflect.* interface ReactComponentLifecycleListener { fun reactComponentWillUpdate() + fun reactComponentDidUpdate(prevProps: RProps, prevState: RState) + fun reactComponentWillUnmount() fun reactComponentWillMount() @@ -25,6 +27,10 @@ abstract class BaseReactExtension(val provider: ReactExtensionProvider) { componentWillUpdate() } + override fun reactComponentDidUpdate(prevProps: RProps, prevState: RState) { + componentDidUpdate(prevProps, prevState) + } + override fun reactComponentWillUnmount() { provider.unsubscribe(this) componentWillUnmount() @@ -43,6 +49,8 @@ abstract class BaseReactExtension(val provider: ReactExtensionProvider) { provider.subscribe(listener) } + open fun componentDidUpdate(prevProps: RProps, prevState: RState) {} + open fun componentWillUpdate() {} open fun componentWillUnmount() {}