此组件显示基本文本。其子级必须是字符串字面量,或者是一系列子级,这些子级要么是文本组件,要么是具有固定高宽的视图组件。
与其他 ReactXP 组件不同,文本组件的一些样式属性会级联到其子级。在以下示例中,标题和正文都继承了其父级 RX.Text 组件的样式,但它们也可以覆盖特定的样式元素。
文本组件与其它组件的另一个区别是,文本子级不按照 flexbox 布局规则进行布局。相反,它使用内联文本布局。
// Should fonts be scaled according to system setting?
allowFontScaling: boolean = true; // Android and iOS only
// When numberOfLines is set, this prop defines how text will be truncated.
// head: The line is displayed so that the end fits in the container and
// the missing text at the beginning of the line is indicated by an
// ellipsis glyph. e.g., "...wxyz"
// middle: The line is displayed so that the beginning and end fit in
// the container and the missing text in the middle is indicated by an
// ellipsis glyph. "ab...yz"
// tail: The line is displayed so that the beginning fits in the container
// and the missing text at the end of the line is indicated by an ellipsis
// glyph. e.g., "abcd..."
ellipsizeMode: 'head' | 'middle' | 'tail'; // Android & iOS only
// Specifies a unique id for an HTML element.
// NOTE: This property may be going away in future versions.
id: string = undefined; // Web only
// Expose the element and/or its children as accessible to Screen readers
importantForAccessibility: ImportantForAccessibility =
ImportantForAccessibility.Yes;
// It is hard or impossible to tell by a reference to an instance of a component
// from where this component has been instantiated. You can assign this property
// and check instance.props.accessibilityId. For example accessibilityId is used
// in View's FocusArbitrator callback.
accessibilityId: string = undefined;
// Should be focused when the component is mounted, see also View's arbitrateFocus
// property.
// WARNING: autoFocus=true means that this Text's requestFocus() method will be
// called, however calling requestFocus() for Text might make sense only on mobile
// for the accessibility reasons, on web it has no effect, the application has to
// handle this either while setting this property or in the View's FocusArbitrator
// callback.
autoFocus: boolean = false;
// For non-zero values, truncates with ellipsis if necessary. Web platform
// doesn't support values greater than 1. Web platform may also not truncate
// properly if text contains line breaks, so it may be necessary to replace
// line breaks before rendering.
numberOfLines: number = 0;
// Mouse & Touch Events
onPress?: (e: SyntheticEvent) => void = undefined;
onContextMenu?: (e: SyntheticEvent) => void = undefined;
// Is the text selectable (affects mouse pointer and copy command)
selectable: boolean = false;
// See below for supported styles
style: TextStyleRuleSet | TextStyleRuleSet[] = [];
// ID that can be used to identify the instantiated element for testing purposes.
testId: string = undefined;
// Sets the accessibility focus to the component.
focus(): void;
// The preferable way to focus the component. When requestFocus() is called,
// the actual focus() will be deferred, and if requestFocus() has been
// called for several components, only one of those components will actually
// get a focus() call. By default, last component for which requestFocus() is
// called will get a focus() call, but you can specify arbitrateFocus property
// of a parent View and provide the callback to decide which one of that View's
// descendants should be focused. This is useful for the accessibility: when
// consecutive focus() calls happen one after another, the next one interrupts
// the screen reader announcement for the previous one and the user gets
// confused. autoFocus property of focusable components also uses requestFocus().
requestFocus(): void;
// Blurs the component.
blur(): void;
// When selection is enabled, retrieves the selected text.
getSelectedText(): string; // Windows only
<RX.Text style={ _styles.defaultText }>
<RX.Text style={ _styles.titleText }>
{ this.props.title }
</RX.Text>
<RX.Text style={ _styles.bodyText }>
{ this.props.body }
</RX.Text>
</RX.Text>
static _styles = {
redBox: RX.Styles.createViewStyle({
width: 10,
height: 10,
backgroundColor: 'red'
})
}
<RX.Text style={ _styles.defaultText } numberOfLines={ 1 }>
<RX.Text> { 'Red box ' } </RX.Text>
<RX.View style={ _styles.redBox } />
<RX.Text> { ' inlined view example' } </RX.Text>
</RX.Text>