uni-app 小程序开发工具中 uni-swipe-action-item 点击报错 ReferenceError: isPC is not defined
uni-app 小程序开发工具中 uni-swipe-action-item 点击报错 ReferenceError: isPC is not defined
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 10 | HBuilderX |
### 示例代码:
```html
<!-- uni-swipe-action 是最外层包裹性质的容器 -->
<uni-swipe-action>
<block v-for="(goods, i) in cart" :key="i">
<!-- uni-swipe-action-item 可以为其子节点提供滑动操作的效果。需要通过 options 属性来指定操作按钮的配置信息 -->
<uni-swipe-action-item :right-options="options" @click="swipeItemClickHandler(goods)">
<!-- 在 radioChangeHandler事件处理函数中,通过事件对象e,得到商品的 goods_id 和 goods_state -->
<my-goods :goods="goods" :show-radio="true" :show-num="true" @radio-change="radioChangeHandler" @num-change="numberChangeHandler"></my-goods>
</uni-swipe-action-item>
</block>
</uni-swipe-action>
export default {
mixins: [badgeMix],
computed: {
...mapState('m_cart', ['cart'])
},
data() {
return {
options: [{
text: '删除',
style: {
backgroundColor: '#C00000'
}
}]
};
},
}
### 操作步骤:
~
### 预期结果:
~
### 实际结果:
~
### bug描述:
uni-swipe-action-item 点击时,在小程序开发工具中报错
更多关于uni-app 小程序开发工具中 uni-swipe-action-item 点击报错 ReferenceError: isPC is not defined的实战教程也可以访问 https://www.itying.com/category-93-b0.html
他们这个写组件的应该拖出去砍了,源码逻辑是只有在h5平台才去加载isPC函数,但是在调用的时候不区分平台,所以才会其他平台全部报错。把“你自己项目路径/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js”
// #ifdef H5
import {
isPC
} from “./isPC”
// #endif
改成:let isPC=function(){return false};如果要在pc上跑不要这么改
更多关于uni-app 小程序开发工具中 uni-swipe-action-item 点击报错 ReferenceError: isPC is not defined的实战教程也可以访问 https://www.itying.com/category-93-b0.html
非常感谢,完美解决
回复 1***@qq.com: 兄弟你是怎么解决的?我按照上面写的没有解决呀
回复 1***@qq.com: 可以了
回复 1***@qq.com: 请问怎么改?
请上传一个能重现问题的测试工程
不会搞 我是在学习阶段
报的错 isPC是 源代码里面的
这要什么测试工程,就是这个组件不能用 滑动的点击事件一点就报错
请上传一个能重现问题的测试工程
同樣這個問題 版本3.4.7
兄弟解决了吗?
回复 1***@163.com: <uni-swipe-action> <block v-for="(goods, i) in cart" :key="i">
<uni-swipe-action-item> <my-goods :goods="goods" :show-radio="true" :show-num="true" [@radio-change](/user/radio-change)="radioChangeHandler" [@num-change](/user/num-change)="numberChangeHandler"></my-goods> <template v-slot:right> <view class="slot-button" [@click](/user/click)="swipeActionClickHandler(goods)"> <text class="slot-button-text">删除</text> </view> </template> </uni-swipe-action-item> </block> </uni-swipe-action>插槽可以用
.slot-button { background-color: #C00000; display: flex; width: 150rpx; justify-content: center; / 子元素水平居中 / align-items: center; / 子元素垂直居中 / }
这是样式
同样的问题
用插槽
在HbuilderX上安装这个插件
啥插件
我也碰到了这个问题,isPC()函数明明是定义了的,也在mpwxs.js引入了,为啥还报错呢?
无法复现问题 ,请提供可简单可复现问题的代码
用插槽可以,这是那段的代码
<uni-swipe-action>
<block v-for="(goods, i) in cart" :key="i">
<uni-swipe-action-item >
<my-goods :goods=“goods” :showRadio=“true” @radioChange=“radioChangeHandler” :showNum=“true” @numChangeHandler=“numberChangeHandler”></my-goods>
<template v-slot:right>
<view class=“slot-button” @click=“swipeActionClickHandler(goods)”>
<text class="slot-button-text">删除</text>
</view>
</template>
</uni-swipe-action-item>
</block>
</uni-swipe-action>
css样式需要改一下:
.slot-button{
background-color: #cc6ed7;
display: flex;
justify-content: center;
align-items: center;
width: 150rpx;
color: white;
font-size: 14px;
}看最后那篇帖子,完美解决
找到项目路径/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js”文件里,把import {isPC} from "./isPC"删除,然后把这个文件的所有的let is_pc = isPC || false这一项 都改成false就好了
谢谢 亲测有效
回复 Kyoma: 能问下你是怎么弄得吗,我的就不行
回复 2***@qq.com:story的 cart.js里面的removeGoodsById还有一个let is_pc = isPC || false,改了就没问题了
在使用 uni-app
开发小程序时,如果你遇到 uni-swipe-action-item
点击报错 ReferenceError: isPC is not defined
,通常是因为在组件内部使用了未定义的变量 isPC
。
解决方法
-
检查代码中是否定义了
isPC
变量:- 确保你在使用
isPC
的地方已经定义了该变量。比如,你可以在data
中定义isPC
,或者在computed
中根据平台判断是否为 PC 端。
export default { data() { return { isPC: false // 根据实际情况设置 }; }, mounted() { // 判断是否为 PC 端 this.isPC = uni.getSystemInfoSync().platform === 'windows' || uni.getSystemInfoSync().platform === 'mac'; } };
- 确保你在使用
-
检查
uni-swipe-action-item
组件的使用:- 确保你在使用
uni-swipe-action-item
时没有直接或间接引用isPC
变量。如果有,确保它在当前作用域内已定义。
- 确保你在使用
-
更新
uni-app
版本:- 如果你使用的是较旧的
uni-app
版本,可能存在一些已知的 bug。尝试更新到最新版本,看看问题是否解决。
- 如果你使用的是较旧的
-
检查插件或组件的依赖:
- 如果你使用了第三方插件或组件,检查它们是否有依赖
isPC
变量。如果有,确保它们在你的项目中已正确配置。
- 如果你使用了第三方插件或组件,检查它们是否有依赖
-
使用
uni.getSystemInfoSync()
判断平台:- 如果你需要根据平台进行不同的处理,可以直接使用
uni.getSystemInfoSync()
来判断当前平台。
const platform = uni.getSystemInfoSync().platform; if (platform === 'windows' || platform === 'mac') { // PC 端处理逻辑 } else { // 非 PC 端处理逻辑 }
- 如果你需要根据平台进行不同的处理,可以直接使用