gpt4 book ai didi

javascript - useRef : state becomes undefined after rendering

转载 作者:行者123 更新时间:2023-12-04 03:28:51 24 4
gpt4 key购买 nike

我正在使用 ml5.js 来训练 ML 模型。我必须使用网络摄像头向模型添加图像。 train 函数在当前代码下运行良好。但是,当我尝试在 内的 if else 语句中设置状态时火车函数,当我尝试 时会抛出错误测试 它使用测试按钮。classifier 的值变成 undefined .

export const Component: React.FC<ComponentProps> = (props: ComponentProps) => {
let classifier: any;
classifier = featureExtractor.classification(capture, videoReady);
}


function final() {
classifier.classify(capture, (error, result) => {
setPrediction(label);

});
}

return (<div>
<Button variant="contained" color="primary" onClick={() => final()}>testing!</Button>
</div>
</div>)
;
};
classifier是一个变量,因此每次都会重新渲染。 useRef 可以在这里使用,但我不知道如何使用。
const classifier = useRef()
classifier.current
像这样访问它仍然给了我错误。我还尝试为分类器本身创建一个状态,但这对我来说似乎也不起作用。
这是一个 Codesandbox 来尝试完整的东西。要查看错误,可以在 train 函数的 if else 语句中设置一个状态:
https://codesandbox.io/s/hardcore-solomon-zb34l?file=/src/Component.tsx

最佳答案

我提供了上面评论中提到的 Codesandbox 的 fork 版本:https://codesandbox.io/s/frosty-sea-0pcfx?file=/src/Component.tsx .这包含一些修复,但大部分与更改 capture 的局部变量有关。和 classifier并将它们分配给引用。以下代码:

let capture: p5Types.Element;
let classifier: any;
改为:
let capture: any = useRef<any>();
let classifier: any = useRef<any>();
然后在代码的其他区域对这些变量的所有引用都切换到 capture.currentclassifier.current .这些也可能存储在状态中,但它们似乎只在渲染期间使用的数据之外分配和使用,并且在分配时不需要组件重新渲染。

关于javascript - useRef : state becomes undefined after rendering,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67221199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com