【发布时间】:2019-02-21 00:42:55
【问题描述】:
TL;DR:我如何将 jQuery 代码(请参见下文)集成/实现到 ReactJS 中?
大家好。 ReactJS 和 Flask 的业余用户在这里。 我只是在寻找关于如何将 jQuery 代码集成到 ReactJS 的解决方案,或者考虑到生命周期中的实现与 ReactJS 不同的其他替代方案。
目前,这个 sn-p(请参阅下面的样板 jQuery 代码)与 Flask 的 CRUD 操作通信非常好,它以 base64 格式从FileReader() 发送选择的图像,并在以下情况下响应相应的预测(通过 ML 模型) #predict-button 被按下。
<body>
<input id="image-selector" type="file">
<button id="predict-button">Predict</button>
<p style="font-weight:bold">Predictions</p>
<p>foo1: <span id="foo1"></span></p>
<p>foo2: <span id="foo2"></span></p>
<p>foo3: <span id="foo3"></span></p>
<img id="selected-image" src=""/>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
let base64Image;
$("#image-selector").change(function() {
let reader = new FileReader();
reader.onload = function(e) {
let dataURL = reader.result;
$('#selected-image').attr("src",dataURL);
base64Image = dataURL.replace("data:image/jpeg;base64,","");
}
reader.readAsDataURL($("#image-selector")[0].files[0]);
$("#foo1").text("");
$("#foo2").text("");
$("#foo3").text("");
});
$("#predict-button").click(function(event){
let message = {
image: base64Image
}
console.log(message);
$.post("http://127.0.0.1:5000/predict",JSON.stringify(message),function(response){
$("#foo1").text(response.prediction.foo1.toFixed(6));
$("#foo2").text(response.prediction.foo2.toFixed(6));
$("#foo3").text(response.prediction.foo3.toFixed(6));
console.log(response);
});
});
</script>
</body>
更不用说,我不再需要 FileReader() 了,因为我在 ReactJS 的“react-webcam”中有这个函数 captureShot(),它返回当前网络摄像头图像的 base64 编码字符串。
captureShot = () => {
const screenshot = this.webcam.getScreenshot();
this.setState({ imageData: screenshot });
}
会出现这样的问题:
- 这可以在 ReactJS 中实现吗?
- 如果是这样,怎么做?是通过
ComponentDidMount()还是在render()内部? - 如果不是,是否使用 Express 方式在 ReactJS 中执行 CRUD 操作并前往 Flask?
我们将不胜感激任何形式的帮助。非常感谢您的时间和考虑。
【问题讨论】:
标签: javascript jquery reactjs flask