Ich versuche, einen Ort zum Hochladen von Bildern mit Cloudinary zu erstellen, funktioniert alles ok, aber ich bin mir nicht sicher, wie überprüft werden, ob Bilder im Zustand sind, weil ich bin bekommen:Reagieren - Eigenschaft 'secure_url' von undefined kann nicht gelesen werden
SECURE_URL ‚Kann Eigenschaft nicht lesen‚‘undefinierten‘
SECURE_URL ist eine Eigenschaft mit einer Bild-uRL auf dem Objekt von cloudinary zurückgegeben.
Staat
this.state = {
toDo: [],
loggedIn: false,
images: []
}
ComponentDidMount (Uploaded image)
componentDidMount() {
firebase.auth().onAuthStateChanged((user) => {
if(user) {
let userId = firebase.auth().currentUser.uid;
let dbRef = firebase.database().ref(`notes`);
dbRef.on("value", (dataObj) => {
let toDoArr = [];
let imagesArr = [];
let dataObjValue = dataObj.val();
let displayName = user.displayName;
for(var prop in dataObjValue) {
let uploadedImage = dataObjValue[prop][0];
dataObjValue[prop].key = prop;
dataObjValue[prop].displayName = user.displayName;
toDoArr.push(dataObjValue[prop]);
imagesArr.push(uploadedImage);
}
this.setState({
toDo: toDoArr
});
this.setState({
loggedIn: true
})
this.setState({
images: imagesArr
})
});
} else {
this.setState({
loggedIn: false
})
}
})
}
Bild hochladen Methode
imageUpload(files) {
const image = files[0];
const cloudName = 'xxxx';
const url = 'https://api.cloudinary.com/v1_1/'+cloudName+'/image/upload';
const timestamp = Date.now()/1000;
const uploadPreset = 'xxxx';
const paramsStr = 'timestamp='+timestamp+'&upload_preset='+uploadPreset+'xxxxx';
const signature = sha1(paramsStr);
const params = {
'api_key': xxxxx,
'timestamp': timestamp,
'upload_preset': uploadPreset,
'signature': signature
}
let uploadRequest = superagent.post(url);
uploadRequest.attach('file', image);
for(let key in params) {
uploadRequest.field(key, params[key]);
}
uploadRequest.end((err, res) => {
if(err) {
alert(err);
}
const uploaded = res.body;
let imagesArr = [];
let userId = firebase.auth().currentUser.uid;
const dbRef = firebase.database().ref(`notes`);
if(imagesArr.length === 0) {
imagesArr.push(uploaded);
dbRef.push(imagesArr);
}
if(imagesArr.length >= 1) {
imagesArr.splice(0, uploaded);
dbRef.remove();
dbRef.push(imagesArr);
}
});
}
Karte durch Array
uploadedImage = (
this.state.images.map((image, i) => {
return (
<img className="avatar" key={`image-${i}`} src={image.secure_url} alt={image.orginal_filename}/>
);
})
);
Does Konsolenprotokollierung 'this.state.images' tatsächlich zeigen, dass' secure_url' in jedem Bild gesetzt? – jami0821
Wo in deinem Code hast du 'secure_url' eingestellt? – Dekel
@Dekel Es wird in '.map' bei' src = {image.secure_url} ' – jami0821