Как перерендерить изображение, не перезагружая страницу?

У меня есть табличка, в которую подгружаются некоторые данные. В ней есть кнопка, функция которой отправлять файл на сервер, с которого приходит ответ, являющийся id этой фотографии в базе данных. Дальнейший доступ к этой фотографии осуществляется по ссылке, PathVarieble которой является id, пришедший с сервера. Но проблема в том, что фотография не перерендеривается после получения ответа. Что я делаю не так?

Таблица Product.tsx:

  import {ProductItem} from "../models";
import "../styles/table.css"
import "../styles/Image.css"
import axios from "axios";
import React, {useState} from "react";
import {Modal} from "./Modal";
import {SavePhoto} from "./SavePhoto";

interface ProductProps {
    product: ProductItem
    remove: (product: ProductItem) => void
}



export function Product({ product, remove }: ProductProps) {
    const url = 'http://localhost:8088/admin/delete/' + product.id

    const [modal, setModal] = useState(false)
    const [imageId, setImageId] = useState(product.imageId)

    const saveHandler = (id : number) => {
        setImageId(id)
    }
    return (
        <div>
            <table className="table">
            <tbody>
            <tr>
                <th>{product.type}</th>
                <th>{product.name}</th>
                <th><img src={'http://localhost:8088/images/'+imageId} alt="Фотографии нет"/></th>
                <th>{product.description}</th>
                <th>{product.price}</th>
                <th><button onClick={() => setModal(true)}
                    className="py-2 px-4 border bg-green-400"
                >Добавить(Изменить) фотографию</button></th>
                {modal && <Modal title="Добавление фотографии" onClose={() => setModal(false)}>
                    <SavePhoto id={product.id}
                               onClose={() => setModal(false)}
                               onSave={saveHandler}
                    />
                </Modal>}
                <th><button className="py-2 px-4 border bg-blue-300">Редактировать</button></th>
                <th><button className="py-2 px-4 border bg-red-300" onClick={ async event => {
                    event.preventDefault();
                    await axios.post(url)
                    remove(product)
                }}>Удалить</button></th>
            </tr>
            </tbody>
            </table>
        </div>
    )
}

Modal.tsx

    import React from "react";

interface ModalProps {
    children: React.ReactNode
    title : string
    onClose: () => void
}





export function Modal({children, title, onClose} : ModalProps) {
    return (
        <>
            <div onClick={onClose}
                className="fixed bg-black/50 top-0 right-0 left-0 bottom-0"/>
            <div className="w-[500px] p-5 rounded bg-white absolute top-10 left-1/2 -translate-x-1/2">
                <h1 className="text-2xl text-center mb-2">{title}</h1>
                {children}
            </div>
        </>
    )
}

Форма с отправкой фотографии: SavePhoto.tsx

    import React, {FormEvent, useRef} from "react";
import axios from "axios";

interface SavePhotoProps {
    id : number
    onClose: () => void
    onSave: (id : number) => void
}


export function SavePhoto( {id, onClose, onSave} : SavePhotoProps) {
    const url = 'http://localhost:8088/admin/saveImage/'+ id
    const fileRef = useRef<HTMLInputElement>(null)

    const submitForm =  async (event: FormEvent) => {
        event.preventDefault()
        const formData = new FormData()
        if (fileRef.current?.files!= null) {
            formData.append("file", fileRef.current.files[0])
            const response = await axios.post(url, formData)
            onSave(response.data)
        }
        onClose()
    }



    return (
        <form onSubmit={submitForm}>
            <input type="file" ref={fileRef}/>
            <button type="submit" className="py-2 px-4 border bg-yellow-400 hover:text-white">Отправить фото</button>
        </form>
    )
}

Ответы (0 шт):