HarmonyOS 鸿蒙Next 应用组件点击没反应

HarmonyOS 鸿蒙Next 应用组件点击没反应 用的是fa模型api9版本的js。写了自定义组件。在预览当中所有功能均正常可用(除了卡得贼要命之外),但部署于本地模拟器以及真机上,出现点击按钮无反应,或只能触发子组件js任务,父组件不能触发的情况。在线求指导,急急!

代码如下:

index.hml:

<element src="../components/todo1/todo/todo.hml">

<div class="container">
    <div class="content2">
        <todo></todo>
    </div>
</div>

/components/todo1/todo/todo.hml:

<element src="../todo_list/todo_list.hml">
<div class="todo">
    <div class="top">
        <text class="title">待辦事項列表</text>
        <div class="inputDiv">
            <input placeholder="請輸入待辦事項" grab:change="onChange"/>
            <button type="capsule" grab:click="onAdd">添加</button>
        </div>
        <div class="content">
            <todo_list class="todoList" items="{{ items }}" @remove="onRemove"></todo_list>
        </div>
    </div>
</div>

/components/todo1/todo/todo.js:

export default {
    data: {
        item: '',
        items: []
    },
    onInit() {
        this.title = "Hello World";
    },
    onChange({value}) {
        this.item = value
    },
    onAdd() {
        if (this.item.startsWith("[") && this.item.endsWith("]")) {
            console.log(`item: ${this.item}`)

            const arr = JSON.parse(this.item)
            this.items = this.items.concat(arr)
            console.log(`items: ${this.items}`)
        } else {
            this.items.push(this.item)
            console.log(JSON.stringify(this.items))
        }
    },
    onRemove(e) {
        let idx = e.detail.idx
        console.log(`todo idx: ${idx}`)
        this.items.splice(idx, 1)
    }
}

/components/todo1/todo_list/todo_list.hml:

<element src="../todo_item/todo_item.hml">
<div class="items">
    <div class="listInfo">
        <list>
            <list-item for="{{ items }}" tid="id" clickeffect="false">
                <todo_item item="{{ $item }}" idx="{{ $idx }}" @remove="onRemove($idx)">
                </todo_item>
            </list-item>
        </list>
    </div>
</div>

/components/todo1/todo_list/todo_list.js:

export default {
    data: {
        title: "",
    },
    props: {
        items: [],
        idx: ''
    },
    onInit() {
        this.title = "Hello World";
    },
    onRemove(idx) {
        console.log(`todo-list: ${idx}`)
        this.$emit('remove', {
            idx: idx
        })
    }
}

/components/todo1/todo_item/todo_item.hml:

<div class="item">
    <div class="itemInfo">
        <text>{{ idx + 1 }} . {{ item }}</text>
        <button type="circle" grab:click="onRemove">X</button>
    </div>
</div>

/components/todo1/todo_item/todo_item.js:

export default {
    data: {
        title: "",
        /*items: [
            {
                id: 1, content: '你好', price: 3
            },
            {
                id: 4, content: 'Hello', price: 4
            },
            {
                id: 5, content: 'Fuck', price: 5
            },
            {
                id: 6, content: '滾蛋', price: 6
            }
        ]*/
    },
    props: {
        item: '',
        idx: ''
    },
    onInit() {
        this.title = "Hello World";
    },
    onRemove() {
        /*        this.$emit('remove', {
                    idx: idx
                })*/
        console.log(`list_item: ${this.idx}`);
        this.$emit('remove')
    }
}

更多关于HarmonyOS 鸿蒙Next 应用组件点击没反应的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

建议使用Stage模型开发,API 9及以后版本主推Stage模型,FA模型已不再演进。

更多关于HarmonyOS 鸿蒙Next 应用组件点击没反应的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


如果FA是没有希望的,为什么不将FA彻底删除呢,这样就不会有人在错误的选项上耗费大把的精力,最终却被告知是死胡同。

在HarmonyOS Next中,应用组件点击无反应可能由以下原因导致:

  1. 事件绑定问题:确保组件的onClick事件已正确绑定,且事件处理函数无语法错误或逻辑问题。
  2. UI布局问题:检查组件是否被其他布局遮挡或覆盖,确保组件在可视区域内且可交互。
  3. 组件状态问题:确认组件是否处于禁用状态(如enabled属性为false),导致无法响应点击事件。
  4. 生命周期问题:确保组件所在的页面或生命周期方法中未阻止事件传递或处理。
  5. 编译或运行环境问题:检查开发工具版本是否与HarmonyOS Next兼容,确保编译和运行时无错误。
  6. 权限问题:某些操作可能需要特定权限,确保应用已获取所需权限。

排查时,建议逐步检查上述可能原因,确认问题所在。

回到顶部