Изображение профиля не отображается после загрузки из локального хранилища с помощью ReactJS

Я новичок в ReactJs и работаю над проектом, который загружает файл данных изображения, преобразует его в URL-адрес и сохраняет в localStorage. После выбора файла отображается изображение. Эта часть рабочая.

Однако, когда я пытаюсь повторно отобразить файл с помощью localStorage.getItem ("ProfileImage"), изображение не отображается. Кроме того, если я выполняю жесткое обновление, даже состояние сбрасывается, и предварительный просмотр изображения исчезает. Интересно, может ли кто-нибудь помочь мне сказать, где я могу ошибиться:

import React, { Component } from 'react'

class ProfilePhoto extends Component {

    constructor(props) {
        super(props)

        this.state = {
            imgUrl: JSON.parse(localStorage.getItem("ProfileImage")) || []
        }
    }

    handleImageUpload = function (e) {

        //get the image file
        const selectedFile = e.target.files[0]

        //need to convert to acceptable format for posting...
        const imgData = window.URL.createObjectURL(selectedFile)

        //const ActiveUser = JSON.parse(localStorage.getItem("ActiveUser"))

        localStorage.setItem("ProfileImage", JSON.stringify(imgData))

        this.setState({
            imgUrl: imgData
        })

        console.info(imgData)

    }.bind(this)

    handleImageSave = function (e) {
        e.preventDefault();
        alert("Your profile image has saved!")

    }.bind(this)

    componentDidMount() {

     let ProfileImage = JSON.parse(localStorage.getItem("ProfileImage"))
     console.info(ProfileImage)

    }


    render() {

        return (
            <div className = "profile-photo">
                <div className = "img-preview">
                    <img src = {this.state.imgUrl} alt = "" />
                </div>

                <form id = "myPhotoForm" name = "myPhotoForm" onSubmit = {this.handleImageSave}>
                    <input type = "file" id = "imgUrl" name = "imgUrl" onChange = {this.handleImageUpload} />
                    <button type = "submit" value = "Submit!">Upload</button>
                </form>
            </div>
        )
    }
}

export default ProfilePhoto

что вы получаете, когда регистрируете imageUrl и данные изображения

nishant 18.06.2018 19:25

@nishant console.info (imgData) = blob: локальный: 3000 / 848cd2f3-cee4-46cc-8037-9e9e2d121f8f console.info (this.state.imgUrl) = blob: локальный: 3000 / 2c53d039-ca22-4a69-b79b-1aae9f372a68

Erin Agobert 18.06.2018 19:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
2
170
1

Ответы 1

попробуй это

localStorage.setItem("ProfileImage", JSON.stringify(imgData).blob)

Не работает. теперь мои данные не будут сохраняться в локальном хранилище.

Erin Agobert 18.06.2018 20:06

извините, я ошибаюсь, замените это let ProfileImage = JSON.parse (localStorage.getItem ("ProfileImage"). blob)

nishant 18.06.2018 20:30

попробуйте это let ProfileImage = localStorage.getItem ("ProfileImage"). substring (5)

nishant 18.06.2018 20:33

Боюсь, это тоже не сработает. console.info (imgData) =: локальный: 3000 / a08f4824-cef2-415d-864c-bd4b9e346537 "

Erin Agobert 18.06.2018 22:15

Другие вопросы по теме