【发布时间】:2021-06-29 21:42:18
【问题描述】:
在我的代码中,我试图从 nodejs 中获取价值并试图在反应中显示。我的图像格式是base64。然后我尝试设置状态,但它给了我名为 setstate 的错误未定义。我的设置状态是图像。谁能告诉我有什么错误? 文件上传.js:
const getImage = () => {
console.log('getImage');
axios.get(`http://localhost:3001/api/showallimages`).then((result) => {
this.setState({image: result});
console.log(result);
});
}
getImage();
return (
<div className="App">
<input
type="file"
onChange={(e) => {
uploadImage(e);
}}
/>
<button onClick={saveImage}>Save</button>
<br/>
</div>
);
}
export default File;
Server.js:
app.get('/api/showallimages',(req,res)=>{
mysqlConnection.query('SELECT * FROM imagetb',(err,rows,fields)=>{
if(!err)
res.send(rows);
else
console.log(err);
})
});
app.listen(3001, () => {
console.log("Server Running On 3000");
});
编辑,这是未添加的代码,它是 Fileupload.js 的一部分:
import React, { useState } from "react";
import "./App.css";
import axios from 'axios';
function File() {
// const [baseImage, setBaseImage] = useState("");
const [image] = useState("");
const uploadImage = async (e) => {
const file = e.target.files[0];
const base64 = await convertBase64(file);
window.bs64=base64;
saveImage();
//setBaseImage(base64);
};
const convertBase64 = (file) => {
return new Promise((resolve, reject) => {
const fileReader = new FileReader();
fileReader.readAsDataURL(file);
fileReader.onload = () => {
resolve(fileReader.result);
};
fileReader.onerror = (error) => {
reject(error);
};
});
};
const saveImage = () => {
axios.post("http://localhost:3001/api/image",{
imgName: window.bs64,
});
};
const getImage = () => {
console.log('getImage');
axios.get(`http://localhost:3001/api/showallimages`).then((result) => {
this.setState({image: result});
console.log(result);
});
}
getImage();
return (
<div className="App">
<input
type="file"
onChange={(e) => {
uploadImage(e);
}}
/>
<button onClick={saveImage}>Save</button>
<br/>
</div>
);
}
export default File;
【问题讨论】:
-
那么我怎么能把它放在课堂上,因为我有其他不在代码中的对象?
-
不要将代码块放在 cmets 中,edit 你的问题是为了添加更多上下文。
-
我真的认为对您最有帮助的事情是阅读链接的文档并尝试理解它。看起来你的问题在这里
const [image] = useState("");。您没有获得更新程序功能。可以像const [image, setImage] = useState("");一样简单,然后使用setImage而不是this.setState。 -
查看 useEffect 钩子,将空数组作为依赖项。
标签: javascript node.js reactjs