1e41f4b71Sopenharmony_ci# $$ Syntax: Two-Way Synchronization of Built-in Components 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci 4e41f4b71Sopenharmony_ciThe $$ operator provides a TypeScript variable by-reference to a built-in component so that the variable value and the internal state of that component are kept in sync. 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ciWhat the internal state is depends on the component. For example, for the [\<TextInput>](../reference/apis-arkui/arkui-ts/ts-basic-components-textinput.md) component, it is the **text** parameter. 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci> **NOTE** 11e41f4b71Sopenharmony_ci> 12e41f4b71Sopenharmony_ci> $$ is also used for [by-reference parameter passing for the @Builder decorator](arkts-builder.md#by-reference-parameter-passing). Pay attention to the differences between the two usages. 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci## Rules of Use 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci- Currently, $$ supports basic variables and variables decorated by [\@State](arkts-state.md), [\@Link](arkts-link.md), and [\@Prop](arkts-prop.md). 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci- $$ supports the components listed below. 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci | Component | Supported Parameter/Attribute| Initial API Version| 22e41f4b71Sopenharmony_ci | ------------------------------------------------------------ | --------------- | ----------- | 23e41f4b71Sopenharmony_ci | [Checkbox](../reference/apis-arkui/arkui-ts/ts-basic-components-checkbox.md) | select | 10 | 24e41f4b71Sopenharmony_ci | [CheckboxGroup](../reference/apis-arkui/arkui-ts/ts-basic-components-checkboxgroup.md) | selectAll | 10 | 25e41f4b71Sopenharmony_ci | [DatePicker](../reference/apis-arkui/arkui-ts/ts-basic-components-datepicker.md) | selected | 10 | 26e41f4b71Sopenharmony_ci | [TimePicker](../reference/apis-arkui/arkui-ts/ts-basic-components-timepicker.md) | selected | 10 | 27e41f4b71Sopenharmony_ci | [MenuItem](../reference/apis-arkui/arkui-ts/ts-basic-components-menuitem.md) | selected | 10 | 28e41f4b71Sopenharmony_ci | [Panel](../reference/apis-arkui/arkui-ts/ts-container-panel.md) | mode | 10 | 29e41f4b71Sopenharmony_ci | [Radio](../reference/apis-arkui/arkui-ts/ts-basic-components-radio.md) | checked | 10 | 30e41f4b71Sopenharmony_ci | [Rating](../reference/apis-arkui/arkui-ts/ts-basic-components-rating.md) | rating | 10 | 31e41f4b71Sopenharmony_ci | [Search](../reference/apis-arkui/arkui-ts/ts-basic-components-search.md) | value | 10 | 32e41f4b71Sopenharmony_ci | [SideBarContainer](../reference/apis-arkui/arkui-ts/ts-container-sidebarcontainer.md) | showSideBar | 10 | 33e41f4b71Sopenharmony_ci | [Slider](../reference/apis-arkui/arkui-ts/ts-basic-components-slider.md) | value | 10 | 34e41f4b71Sopenharmony_ci | [Stepper](../reference/apis-arkui/arkui-ts/ts-basic-components-stepper.md) | index | 10 | 35e41f4b71Sopenharmony_ci | [Swiper](../reference/apis-arkui/arkui-ts/ts-container-swiper.md) | index | 10 | 36e41f4b71Sopenharmony_ci | [Tabs](../reference/apis-arkui/arkui-ts/ts-container-tabs.md) | index | 10 | 37e41f4b71Sopenharmony_ci | [TextArea](../reference/apis-arkui/arkui-ts/ts-basic-components-textarea.md) | text | 10 | 38e41f4b71Sopenharmony_ci | [TextInput](../reference/apis-arkui/arkui-ts/ts-basic-components-textinput.md) | text | 10 | 39e41f4b71Sopenharmony_ci | [TextPicker](../reference/apis-arkui/arkui-ts/ts-basic-components-textpicker.md) | selected, value| 10 | 40e41f4b71Sopenharmony_ci | [Toggle](../reference/apis-arkui/arkui-ts/ts-basic-components-toggle.md) | isOn | 10 | 41e41f4b71Sopenharmony_ci | [AlphabetIndexer](../reference/apis-arkui/arkui-ts/ts-container-alphabet-indexer.md) | selected | 10 | 42e41f4b71Sopenharmony_ci | [Select](../reference/apis-arkui/arkui-ts/ts-basic-components-select.md) | selected, value| 10 | 43e41f4b71Sopenharmony_ci | [BindSheet](../reference/apis-arkui/arkui-ts/ts-universal-attributes-sheet-transition.md) | isShow | 10 | 44e41f4b71Sopenharmony_ci | [BindContentCover](../reference/apis-arkui/arkui-ts/ts-universal-attributes-modal-transition.md) | isShow | 10 | 45e41f4b71Sopenharmony_ci | [Refresh](../reference/apis-arkui/arkui-ts/ts-container-refresh.md) | refreshing | 8 | 46e41f4b71Sopenharmony_ci | [GridItem](../reference/apis-arkui/arkui-ts/ts-container-griditem.md) | selected | 10 | 47e41f4b71Sopenharmony_ci | [ListItem](../reference/apis-arkui/arkui-ts/ts-container-listitem.md) | selected | 10 | 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci- When the variable bound to $$ changes, the UI is re-rendered synchronously. 50e41f4b71Sopenharmony_ci 51e41f4b71Sopenharmony_ci 52e41f4b71Sopenharmony_ci## Example 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_ciThis example uses the **text** parameter of the [TextInput](../reference/apis-arkui/arkui-ts/ts-basic-components-textinput.md) component. 55e41f4b71Sopenharmony_ci 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci```ts 58e41f4b71Sopenharmony_ci// xxx.ets 59e41f4b71Sopenharmony_ci@Entry 60e41f4b71Sopenharmony_ci@Component 61e41f4b71Sopenharmony_cistruct TextInputExample { 62e41f4b71Sopenharmony_ci @State text: string = '' 63e41f4b71Sopenharmony_ci controller: TextInputController = new TextInputController() 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci build() { 66e41f4b71Sopenharmony_ci Column({ space: 20 }) { 67e41f4b71Sopenharmony_ci Text(this.text) 68e41f4b71Sopenharmony_ci TextInput({ text: $$this.text, placeholder: 'input your word...', controller: this.controller }) 69e41f4b71Sopenharmony_ci .placeholderColor(Color.Grey) 70e41f4b71Sopenharmony_ci .placeholderFont({ size: 14, weight: 400 }) 71e41f4b71Sopenharmony_ci .caretColor(Color.Blue) 72e41f4b71Sopenharmony_ci .width(300) 73e41f4b71Sopenharmony_ci }.width('100%').height('100%').justifyContent(FlexAlign.Center) 74e41f4b71Sopenharmony_ci } 75e41f4b71Sopenharmony_ci} 76e41f4b71Sopenharmony_ci``` 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci 80