赞
踩
直接在线API的JSON转TS代码
低代码实现鸿蒙API调用快速生成ArkUI代码只需要调用你的API接口返回JSON结构的数据,在线绑定变量后,采用了axios鸿蒙扩展插件来加载远程API。
生成的代码如下,程序可能也还有些不足之处,欢迎吐槽,不断优化完善。
- import {
- navigateTo
- } from '../common/Page'
- import axios, {
- AxiosResponse
- } from '@ohos/axios'
- interface IDataDataAttr {
- "title": string
- }
- interface IDataData {
- "img": string,
- "remark": string,
- "id": number,
- "title": string,
- "attr": IDataDataAttr
- }
- interface IData {
- "msg": string,
- "code": number,
- "data": IDataData[]
- }
- @Entry
- @Component
- export struct Index {
- @State data: IData = {
- "code": 0,
- "msg": "",
- "data": [{
- "title": "",
- "remark": "",
- "id": 0,
- "attr": {
- "title": ""
- },
- "img": ""
- }]
- }
- async dataApi() {
- try {
- const response: AxiosResponse = await axios.post < IData,
- AxiosResponse < IData > , null > ('https://php.diygw.com/article.php');
- this.data = response ? response.data : null
- } catch (error) {
- console.error(JSON.stringify(error));
- }
- }
-
- async onPageShow() {
- await this.dataApi()
- }
-
- async aboutToAppear() {
- await this.onPageShow()
- }
-
- build() {
- Row() {
- Navigation() {
- Column() {
- Scroll() {
- Column() {
- Grid() {
- ForEach(this.data.data, (item) => {
- GridItem() {
- Column({
- space: 5
- }) {
- Image(item.img).objectFit(ImageFit.Fill).width('42vp').height('42vp')
- Text(item.title).fontSize('12fp').width('100%').textAlign(TextAlign.Center)
- }.width('100%')
- }
- }, item => JSON.stringify(item));
- }.padding({
- top: '10vp',
- bottom: '10vp'
- }).height(this.data.data.length / 3 * 91 + 20).columnsTemplate('1fr 1fr 1fr ')
- .rowsGap(15).layoutDirection(GridDirection.Row)
- .width('100%')
- List() {
- ListItem() {
- Flex({
- direction: FlexDirection.Row,
- alignItems: ItemAlign.Center,
- }) {
- Image($r('app.media.grid1')).flexShrink(0).objectFit(ImageFit.Fill).width('42vp').height('42vp')
- Column() {
- Text('菜单一111').fontSize('14fp').width('100%')
- Text('说明文字').fontSize('12fp').width('100%')
- }.padding({
- left: 5
- })
- Image($r('app.media.ic_arrow')).flexShrink(0).objectFit(ImageFit.Contain).width('12vp').height('24vp')
- }.width('100%')
- }.padding(15).borderWidth({
- bottom: 1
- }).borderColor('#efefef')
- ListItem() {
- Flex({
- direction: FlexDirection.Row,
- alignItems: ItemAlign.Center,
- }) {
- Image($r('app.media.grid2')).flexShrink(0).objectFit(ImageFit.Fill).width('42vp').height('42vp')
- Column() {
- Text('菜单二').fontSize('14fp').width('100%')
- Text('说明文字').fontSize('12fp').width('100%')
- }.padding({
- left: 5
- })
- Image($r('app.media.ic_arrow')).flexShrink(0).objectFit(ImageFit.Contain).width('12vp').height('24vp')
- }.width('100%')
- }.padding(15).borderWidth({
- bottom: 1
- }).borderColor('#efefef')
- ListItem() {
- Flex({
- direction: FlexDirection.Row,
- alignItems: ItemAlign.Center,
- }) {
- Image($r('app.media.grid3')).flexShrink(0).objectFit(ImageFit.Fill).width('42vp').height('42vp')
- Column() {
- Text('菜单三').fontSize('14fp').width('100%')
- Text('说明文字').fontSize('12fp').width('100%')
- }.padding({
- left: 5
- })
- Image($r('app.media.ic_arrow')).flexShrink(0).objectFit(ImageFit.Contain).width('12vp').height('24vp')
- }.width('100%')
- }.padding(15).borderWidth({
- bottom: 1
- }).borderColor('#efefef')
- }
- .width('100%')
- }.alignItems(HorizontalAlign.Start)
- }
- }.height('100%').alignItems(HorizontalAlign.Start).backgroundColor('#fff')
-
- }
- .width('100%')
- .height('100%')
- .backgroundColor('#07c160')
- .title(this.NavigationTitle())
- .titleMode(NavigationTitleMode.Mini)
- .align(Alignment.Center)
- .hideBackButton(true)
- }.width('100%').height('100%')
- }
-
- @Builder
- NavigationTitle() {
- Column() {
- Text('首页')
- .width('100%')
- .textAlign(TextAlign.Center)
- .height('28vp')
- .fontSize('20fp')
- .fontWeight(500)
- .fontColor('#fff')
- }
- }
-
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。