sealed trait Context[A] extends AnyRef
React Context.
See https://reactjs.org/docs/context.html
- Self Type
- Context[A]
- Since
1.3.0 / React 16.3.0
- Alphabetic
- By Inheritance
- Context
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract val raw: facade.React.Context[A]
The underlying JS
React.Context
.
Concrete Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def consume(f: (A) => VdomNode): VdomElement
Subscribes to context changes.
Subscribes to context changes.
The value argument passed to the function will be equal to the value prop of the closest Provider for this context above in the tree. If there is no Provider for this context above, the value argument will be equal to the defaultValue that was passed to createContext().
All Consumers that are descendants of a Provider will re-render whenever the Provider's value prop changes. The propagation from Provider to its descendant Consumers is not subject to the shouldComponentUpdate method, so the Consumer is updated even when an ancestor component bails out of the update.
Changes are determined by comparing the new and old values using referential equality.
- final def displayName: String
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- def provide(value: A): Provided[A]
Allows Consumers to subscribe to context changes.
Allows Consumers to subscribe to context changes. Accepts a value prop to be passed to Consumers that are descendants of this Provider. One Provider can be connected to many Consumers. Providers can be nested to override values deeper within the tree.
Caveat:
The React Context API uses
Object.is
to determine equality (see https://reactjs.org/docs/context.html#caveats). This affectsscalajs-react will use plain JS values without translation where possible (eg. booleans, ints, strings) in which case, universal equality is used by React (eg. true == true, 123 == 123, "hello" == "hello"). For these types of contexts, feel free to call
context.provide(value)(children)
the same way you would in React JS.Non-JS values (eg. case classes) are boxed into JS objects in which case, React will use referential equality meaning that you need to hold on to and reuse the boxed instance. Seeing as you're not doing the boxing yourself, what you should hold on to and reuse is the result of
.provide()
before you apply children. For example, instead of:class Backend { def render(p: Props) = context.provide(X(...))(<.div("hello")) }
you should save and reuse the provide result:
class Backend { private val contextX = context.provide(X(...)) def render(p: Props) = contextX(<.div("hello")) }
Doing so will keep React happy and avoid needless re-renders.
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()