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![TextInputDouble](figures/TextInputDouble.gif)
80