For AI agents: the complete documentation index is available at /next/llms.txt, the full documentation bundle is available at /next/llms-full.txt, and this page is available as Markdown at /next/api/react/Components/PureComponent.md.
  • English
  • Class: PureComponent<P = { }, S = { }, SS = any>

    Extends

    Type Parameters

    Type ParameterDefault type
    Pobject
    Sobject
    SSany

    Constructors

    Constructor

    new PureComponent<P = { }, S = { }, SS = any>(props: P): PureComponent<P, S, SS>

    Parameters

    ParameterType
    propsP

    Returns

    PureComponent<P, S, SS>

    Inherited from

    Component.constructor

    Constructor

    new PureComponent<P = { }, S = { }, SS = any>(props: P, context: any): PureComponent<P, S, SS>

    Parameters

    ParameterTypeDescription
    propsP-
    contextanyvalue of the parent Context specified in contextType.

    Returns

    PureComponent<P, S, SS>

    Inherited from

    Component.constructor

    Properties

    context

    context: unknown

    If using React Context, re-declare this in your class to be the React.ContextType of your static contextType. Should be used with type annotation or static contextType.

    Example

    static contextType = MyContext
    // For TS pre-3.7:
    context!: React.ContextType<typeof MyContext>
    // For TS 3.7 and above:
    declare context: React.ContextType<typeof MyContext>

    See

    React Docs

    Inherited from

    Component.context


    props

    readonly props: Readonly<P>

    Inherited from

    Component.props


    state

    state: Readonly<S>

    Inherited from

    Component.state


    contextType?

    static optional contextType?: Context<any>

    If set, this.context will be set at runtime to the current value of the given Context.

    Example

    type MyContext = number
    const Ctx = React.createContext<MyContext>(0)
    
    class Foo extends React.Component {
      static contextType = Ctx
      context!: React.ContextType<typeof Ctx>
      render () {
        return <>My context's value: {this.context}</>;
      }
    }

    See

    https://react.dev/reference/react/Component#static-contexttype

    Inherited from

    Component.contextType


    propTypes?

    static optional propTypes?: any

    Ignored by React.

    Deprecated

    Only kept in types for backwards compatibility. Will be removed in a future major release.

    Inherited from

    Component.propTypes

    Methods

    componentDidCatch()?

    optional componentDidCatch(error: Error, errorInfo: ErrorInfo): void

    Catches exceptions generated in descendant components. Unhandled exceptions will cause the entire component tree to unmount.

    Parameters

    ParameterType
    errorError
    errorInfoErrorInfo

    Returns

    void

    Inherited from

    Component.componentDidCatch


    componentDidMount()?

    optional componentDidMount(): void

    Called immediately after a component is mounted. Setting state here will trigger re-rendering.

    Returns

    void

    Inherited from

    Component.componentDidMount


    componentDidUpdate()?

    optional componentDidUpdate(prevProps: Readonly<P>, prevState: Readonly<S>, snapshot?: SS): void

    Called immediately after updating occurs. Not called for the initial render.

    The snapshot is only present if getSnapshotBeforeUpdate is present and returns non-null.

    Parameters

    ParameterType
    prevPropsReadonly<P>
    prevStateReadonly<S>
    snapshot?SS

    Returns

    void

    Inherited from

    Component.componentDidUpdate


    componentWillMount()?

    optional componentWillMount(): void

    Called immediately before mounting occurs, and before Component.render. Avoid introducing any side-effects or subscriptions in this method.

    Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps prevents this from being invoked.

    Returns

    void

    Deprecated

    16.3, use componentDidMount or the constructor instead; will stop working in React 17

    See

    Inherited from

    Component.componentWillMount


    componentWillReceiveProps()?

    optional componentWillReceiveProps(nextProps: Readonly<P>, nextContext: any): void

    Called when the component may be receiving new props. React may call this even if props have not changed, so be sure to compare new and existing props if you only want to handle changes.

    Calling Component.setState generally does not trigger this method.

    Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps prevents this from being invoked.

    Parameters

    ParameterType
    nextPropsReadonly<P>
    nextContextany

    Returns

    void

    Deprecated

    16.3, use static getDerivedStateFromProps instead; will stop working in React 17

    See

    Inherited from

    Component.componentWillReceiveProps


    componentWillUnmount()?

    optional componentWillUnmount(): void

    Called immediately before a component is destroyed. Perform any necessary cleanup in this method, such as cancelled network requests, or cleaning up any DOM elements created in componentDidMount.

    Returns

    void

    Inherited from

    Component.componentWillUnmount


    componentWillUpdate()?

    optional componentWillUpdate(nextProps: Readonly<P>, nextState: Readonly<S>, nextContext: any): void

    Called immediately before rendering when new props or state is received. Not called for the initial render.

    Note: You cannot call Component.setState here.

    Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps prevents this from being invoked.

    Parameters

    ParameterType
    nextPropsReadonly<P>
    nextStateReadonly<S>
    nextContextany

    Returns

    void

    Deprecated

    16.3, use getSnapshotBeforeUpdate instead; will stop working in React 17

    See

    Inherited from

    Component.componentWillUpdate


    forceUpdate()

    forceUpdate(callback?: () => void): void

    Parameters

    ParameterType
    callback?() => void

    Returns

    void

    Inherited from

    Component.forceUpdate


    getSnapshotBeforeUpdate()?

    optional getSnapshotBeforeUpdate(prevProps: Readonly<P>, prevState: Readonly<S>): SS | null

    Runs before React applies the result of render to the document, and returns an object to be given to componentDidUpdate. Useful for saving things such as scroll position before render causes changes to it.

    Note: the presence of this method prevents any of the deprecated lifecycle events from running.

    Parameters

    ParameterType
    prevPropsReadonly<P>
    prevStateReadonly<S>

    Returns

    SS | null

    Inherited from

    Component.getSnapshotBeforeUpdate


    render()

    render(): ReactNode

    Returns

    ReactNode

    Inherited from

    Component.render


    setState()

    setState<K extends string | number | symbol>(state: S | ((prevState: Readonly<S>, props: Readonly<P>) => S | Pick<S, K> | null) | Pick<S, K> | null, callback?: () => void): void

    Type Parameters

    Type Parameter
    K extends string | number | symbol

    Parameters

    ParameterType
    stateS | ((prevState: Readonly<S>, props: Readonly<P>) => S | Pick<S, K> | null) | Pick<S, K> | null
    callback?() => void

    Returns

    void

    Inherited from

    Component.setState


    shouldComponentUpdate()?

    optional shouldComponentUpdate(nextProps: Readonly<P>, nextState: Readonly<S>, nextContext: any): boolean

    Called to determine whether the change in props and state should trigger a re-render.

    Component always returns true. PureComponent implements a shallow comparison on props and state and returns true if any props or states have changed.

    If false is returned, Component.render, componentWillUpdate and componentDidUpdate will not be called.

    Parameters

    ParameterType
    nextPropsReadonly<P>
    nextStateReadonly<S>
    nextContextany

    Returns

    boolean

    Inherited from

    Component.shouldComponentUpdate


    UNSAFE_componentWillMount()?

    optional UNSAFE_componentWillMount(): void

    Called immediately before mounting occurs, and before Component.render. Avoid introducing any side-effects or subscriptions in this method.

    This method will not stop working in React 17.

    Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps prevents this from being invoked.

    Returns

    void

    Deprecated

    16.3, use componentDidMount or the constructor instead

    See

    Inherited from

    Component.UNSAFE_componentWillMount


    UNSAFE_componentWillReceiveProps()?

    optional UNSAFE_componentWillReceiveProps(nextProps: Readonly<P>, nextContext: any): void

    Called when the component may be receiving new props. React may call this even if props have not changed, so be sure to compare new and existing props if you only want to handle changes.

    Calling Component.setState generally does not trigger this method.

    This method will not stop working in React 17.

    Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps prevents this from being invoked.

    Parameters

    ParameterType
    nextPropsReadonly<P>
    nextContextany

    Returns

    void

    Deprecated

    16.3, use static getDerivedStateFromProps instead

    See

    Inherited from

    Component.UNSAFE_componentWillReceiveProps


    UNSAFE_componentWillUpdate()?

    optional UNSAFE_componentWillUpdate(nextProps: Readonly<P>, nextState: Readonly<S>, nextContext: any): void

    Called immediately before rendering when new props or state is received. Not called for the initial render.

    Note: You cannot call Component.setState here.

    This method will not stop working in React 17.

    Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps prevents this from being invoked.

    Parameters

    ParameterType
    nextPropsReadonly<P>
    nextStateReadonly<S>
    nextContextany

    Returns

    void

    Deprecated

    16.3, use getSnapshotBeforeUpdate instead

    See

    Inherited from

    Component.UNSAFE_componentWillUpdate

    Except as otherwise noted, this work is licensed under a Creative Commons Attribution 4.0 International License, and code samples are licensed under the Apache License 2.0.