父组件调用
<camera-preview ref="cameraPreview" :width="previewWidth" :height="previewHeight"
v-if="showPreview"></camera-preview>
// 开始摄像头预览
startCameraPreview(cameraId : string) {
if (this.previewState.isPreviewing) {
console.log("预览已在进行中")
return
}
// 确保预览组件已加载
this.$nextTick(() => {
const cameraPreview = this.$refs["cameraPreview"] as any
if (cameraPreview == null) {
console.error("未找到预览组件")
return
}
// 设置Surface回调
cameraPreview.setSurfaceChangeCallback((surface : Surface | null) => {
this.previewSurface = surface
if (surface == null) {
console.log("Surface已释放")
return
}
// 如果预览未开始,现在开始预览
if (!this.previewState.isPreviewing) {
this.doSartPreview(cameraId, surface)
}
})
})
},
子组件上的方法
// 设置 Surface 变化回调
methods: {
// 设置 Surface 变化回调
setSurfaceChangeCallback(callback : SurfaceChangeCallback) {
surfaceChangeCallback = callback
// 使用局部变量避免智能转换问题
const localSurface = currentSurface
const localCallback = surfaceChangeCallback
// 如果已经有surface,立即回调
if (localSurface != null && localCallback != null) {
localCallback(localSurface)
}
}
},
报错error: Unresolved reference: setSurfaceChangeCallback
2***@qq.com (作者)
[uni.UNI8939BD0.GenComponentsCameraPreviewCameraPreview] {height: 400, setSurfaceChangeCallback: function () { [native code] }, updateViewSize: function () { [native code] }, width: 300}
2025-07-02 14:14
蔡cai
回复 2***@qq.com: error: Unresolved reference: setSurfaceChangeCallback这个报错,他有显示是哪个文件哪行出错吧
2025-07-02 14:22
蔡cai
回复 蔡cai: 如果是父组件,你可以试下调用子组件其他的,或者注释掉看看
2025-07-02 14:23
2***@qq.com (作者)
回复 蔡cai: 不行怎么也调用不了,大佬是怎么调用子组件上面的方法的呢
2025-07-02 14:45
蔡cai
回复 2***@qq.com: 跟你差不多,this.$refs.componentsName.func()
2025-07-02 14:52