-
- All Implemented Interfaces:
-
java.lang.annotation.Annotation
@Retention(value = RUNTIME)@Target(value = ElementType.METHOD) public @interface ReactProp
Use this annotation to annotate properties of native views that should be exposed to JS. This annotation should only be used for setter methods of subclasses of .
Each annotated method should return
{@code void}and take exactly two arguments: first being a view instance to be updated and second a value that should be set.Allowed types of values are:
- primitives (int, boolean, double, float)
- String
- Boolean
- com.facebook.react.bridge.ReadableArray
- com.facebook.react.bridge.ReadableMap
When property gets removed from the corresponding component in React, annotated setter will be called with
{@code null}in case of non-primitive value type or with a default value in case when the value type is a primitive (use appropriate default field of this annotation to customize default value that is going to be used: defaultBoolean, defaultDouble, etc.)Since in case of property removal for non-primitive value type setter will be called with value set to
{@code null}it's required that value type is annotated with Nullable.Note: Since boolean property type can be represented both as primitive and wrapped default value set through defaultBoolean is only respected for primitive type and for the wrapped type
{@code null}will be used as a default.
-
-
Field Summary
Fields Modifier and Type Field Description public final static StringUSE_DEFAULT_TYPE
-
Method Summary
Modifier and Type Method Description abstract Stringname()Name of the property exposed to JS that will be updated using setter method annotated with thegiven instance of {@code ReactProp}annotationabstract StringcustomType()Type of property that will be send to JS. abstract doubledefaultDouble()Default value for property of type {@code double}.abstract floatdefaultFloat()Default value for property of type {@code float}.abstract intdefaultInt()Default value for property of type {@code int}.abstract booleandefaultBoolean()Default value for property of type {@code boolean}.-
-
Method Detail
-
name
abstract String name()
Name of the property exposed to JS that will be updated using setter method annotated with thegiven instance of
{@code ReactProp}annotation
-
customType
@Nullable() abstract String customType()
Type of property that will be send to JS. In most of the cases
{@code customType}should not beset in which case default type will be send to JS based on the type of value argument from thesetter method (e.g. for{@code int},{@code double}default is "number", for{@code * ReadableArray}it's "Array"). Custom type may be used when additional processing of the valueneeds to be done in JS before sending it over the bridge. A good example of that would bebackgroundColor property, which is expressed as a{@code String}in JS, but we use{@code * processColor}JS module to convert it to{@code int}before sending over the bridge.
-
defaultDouble
abstract double defaultDouble()
Default value for property of type
{@code double}. This value will be provided to propertysetter method annotated with ReactProp if property with a given name gets removed fromthe component description in JS
-
defaultFloat
abstract float defaultFloat()
Default value for property of type
{@code float}. This value will be provided to propertysetter method annotated with ReactProp if property with a given name gets removed fromthe component description in JS
-
defaultInt
abstract int defaultInt()
Default value for property of type
{@code int}. This value will be provided to property settermethod annotated with ReactProp if property with a given name gets removed from thecomponent description in JS
-
defaultBoolean
abstract boolean defaultBoolean()
Default value for property of type
{@code boolean}. This value will be provided to propertysetter method annotated with ReactProp if property with a given name gets removed fromthe component description in JS
-
-
-
-