ts-basic-components-stepper.md 3.2 KB
Newer Older
Z
zengyawen 已提交
1 2
# Stepper

3
The **\<Stepper>** component provides a step navigator.
Z
zengyawen 已提交
4

5 6
> **NOTE**
>
Z
zengyawen 已提交
7 8 9 10 11 12 13 14 15 16 17 18
> This component is supported since API version 8. Updates will be marked with a superscript to indicate their earliest API version.




## Required Permissions

None


## Child Components

19
Only the child component **\<[StepperItem](ts-basic-components-stepperitem.md)>** is supported.
Z
zengyawen 已提交
20 21 22 23 24 25 26 27


## APIs

Stepper(value?: { index?: number })


- Parameters
28
  | Name | Type | Mandatory | Default Value | Description |
Z
zengyawen 已提交
29
  | -------- | -------- | -------- | -------- | -------- |
30
  | index | number | No | 0 | Index of the **\<StepperItem>** that is currently displayed. |
Z
zengyawen 已提交
31 32 33 34 35 36 37 38 39


## Attributes

None


## Events

40
| Name | Description |
Z
zengyawen 已提交
41
| -------- | -------- |
42 43 44
| onFinish(callback: () =&gt; void) | Invoked when the **nextLabel** of the last **\<StepperItem>** in the **\<Stepper>** is clicked. |
| onSkip(callback: () =&gt; void) | Invoked when the current **\<StepperItem>** is **ItemState.Skip** and the **nextLabel** is clicked. |
| onChange(callback: (prevIndex?: number, index?: number) =&gt; void) | Invoked when the text button on the left or right is clicked to switch between steps.<br/>- **prevIndex**: index of the step page before the switching.<br/>- **index**: index of the step page after the switching, that is, index of the previous or next page. |
Z
zengyawen 已提交
45 46 47 48 49


## Example


50 51
```ts
// xxx.ets
Z
zengyawen 已提交
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
@Entry
@Component
struct StepperExample {
  @State currentIndex: number = 0
  @State firstState: ItemState = ItemState.Normal
  @State secondState: ItemState = ItemState.Normal

  build() {
    Stepper({
      index: this.currentIndex
    }) {
      StepperItem() {
        Text('Page One')
          .fontSize(35)
          .fontColor(Color.Blue)
          .width(200)
          .lineHeight(50)
69
          .margin({ top: 250 })
Z
zengyawen 已提交
70 71
      }
      .nextLabel('')
72 73
      .position({ x: '35%', y: 0 })

Z
zengyawen 已提交
74 75 76 77 78 79
      StepperItem() {
        Text('Page Two')
          .fontSize(35)
          .fontColor(Color.Blue)
          .width(200)
          .lineHeight(50)
80 81
          .margin({ top: 250 })
          .onClick(() => {
Z
zengyawen 已提交
82 83 84 85 86 87
            this.firstState = this.firstState === ItemState.Skip ? ItemState.Normal : ItemState.Skip
          })
      }
      .nextLabel('Next')
      .prevLabel('Previous')
      .status(this.firstState)
88 89
      .position({ x: '35%', y: 0 })

Z
zengyawen 已提交
90 91 92 93 94 95
      StepperItem() {
        Text('Page Three')
          .fontSize(35)
          .fontColor(Color.Blue)
          .width(200)
          .lineHeight(50)
96 97
          .margin({ top: 250 })
          .onClick(() => {
Z
zengyawen 已提交
98 99 100
            this.secondState = this.secondState === ItemState.Waiting ? ItemState.Normal : ItemState.Waiting
          })
      }
101
      .position({ x: '35%', y: 0 })
Z
zengyawen 已提交
102
      .status(this.secondState)
103

Z
zengyawen 已提交
104 105 106 107 108 109
      StepperItem() {
        Text('Page four')
          .fontSize(35)
          .fontColor(Color.Blue)
          .width(200)
          .lineHeight(50)
110
          .margin({ top: 250 })
Z
zengyawen 已提交
111
      }
112
      .position({ x: '35%', y: 0 })
Z
zengyawen 已提交
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
      .nextLabel('Finish')
    }
    .onFinish(() => {
      console.log('onFinish')
    })
    .onSkip(() => {
      console.log('onSkip')
    })
    .onChange((prevIndex: number, index: number) => {
      this.currentIndex = index
    })
    .align(Alignment.Center)
  }
}
```


![en-us_image_0000001250678457](figures/en-us_image_0000001250678457.gif)