Options
All
  • Public
  • Public/Protected
  • All
Menu

A React context provider for a Database.

This will wait for the database to finish opening on mount. Until DatabaseContext.database settles, the DatabaseContext will store undefined, the default value.

Important! You will need to ensure the database closes itself if you ever need to change DatabaseContext.database, or if you unmount this component. If either of those things happen, this component will throw an exception, (unless unmounting after an error). It is therefore recommended that this component is contained within an error boundary that handles exceptions gracefully, probably calling Database.close.

const databasePromise = Database.open("myDatabaseWithAnError", 1);
const DBContext = new DatabaseContext(databasePromise);

class Component extends React.Component {
  static getDerivedStateFromError(error) {
    return { error };
  }

  state = {};

  render() {
    const { error } = this.state;

    if (error) {
      return <span>Something went wrong!</span>
    }

    return (
      <DatabaseProvider
        context={DBContext}
      >
        <span>Some content that relies on the database.</span>
      </DatabaseProvider>
  }
}

Type parameters

Hierarchy

Index

Constructors

constructor

Properties

context

context: any

If using the new style 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.

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

https://reactjs.org/docs/context.html

props

props: Readonly<DatabaseProviderProps<DBSchema>> & Readonly<{ children?: ReactNode }>

refs

refs: {}

Type declaration

  • [key: string]: ReactInstance

Static Optional contextType

contextType: Context<any>

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

Usage:

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://reactjs.org/docs/context.html#classcontexttype

Methods

Optional UNSAFE_componentWillMount

  • UNSAFE_componentWillMount(): void

Optional UNSAFE_componentWillReceiveProps

  • UNSAFE_componentWillReceiveProps(nextProps: Readonly<DatabaseProviderProps<DBSchema>>, nextContext: any): void

Optional UNSAFE_componentWillUpdate

Optional componentDidCatch

  • componentDidCatch(error: Error, errorInfo: ErrorInfo): void
  • Catches exceptions generated in descendant components. Unhandled exceptions will cause the entire component tree to unmount.

    Parameters

    • error: Error
    • errorInfo: ErrorInfo

    Returns void

Optional componentWillMount

  • componentWillMount(): void

Optional componentWillReceiveProps

  • componentWillReceiveProps(nextProps: Readonly<DatabaseProviderProps<DBSchema>>, nextContext: any): void

Optional componentWillUpdate

forceUpdate

  • forceUpdate(callback?: undefined | (() => void)): void
  • Parameters

    • Optional callback: undefined | (() => void)

    Returns void

Optional getSnapshotBeforeUpdate

  • 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 getSnapshotBeforeUpdate prevents any of the deprecated lifecycle events from running.

    Parameters

    Returns never | null

setState

Optional shouldComponentUpdate

  • 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

    Returns boolean

Object literals

Static propTypes

propTypes: object

children

children: Validator<string | number | false | true | {} | ReactElementLike | ReactNodeArray> = PropTypes.node.isRequired

context

context: Validator<DatabaseContext<NamedSchema<string, number, Schema<string | number | false | true | Date | (string | number | false | true | Date)[] | {} | {}>>>> = PropTypes.instanceOf(DatabaseContext).isRequired

Generated using TypeDoc