mobx React 并未更新每个进度条

问题描述 投票:0回答:1

我有一个具有 mvvm 架构的应用程序,我想通过上传文件向用户展示 Ui 中的进度。

我从我的 api 获取进度,我可以将其实时发送到我的 mobx 商店。我可以在这里打印出该值,但在 UI 上,进度从 0 开始,以 100 结束。没有其他值。

我的代码错误在哪里?

    class StorageStore implements IStorageSore {
    ....

    uploadProgress: number = 0

    setProgress = (progress: number) => {
        console.log('call setProgress', progress)

        this.uploadProgress = progress
    }

    async uploadBlob(file: File) {
        const blockNameWithPath = `someName`
        this.setProgress(0)
        await this.storageLoader.uploadBlob(
            file,
            Blob.UPLOAD,
            blockNameWithPath,
            this.setProgress
        )
       ....

    }
}
    import { Progress } from '@/components/ui/progress'

const UploadDialog: React.FC<IUploadDialog> = observer(
    ({ machineStore, storageSore }) => {
        const { t } = useTranslation()

        return (
            <Dialog
                open={machineStore.isUploadDialogOpen}
                onOpenChange={(open) => machineStore.setIsDialogOpen(open)}
            >
                <DialogTrigger asChild>
                    <Button>
                        {t('documents.add.title')}
                    </Button>
                </DialogTrigger>
                <DialogContent
                    className="sm:max-w-[425px]"
                >
                    <DialogHeader>
                        <DialogTitle>{t('title')}</DialogTitle>
                    </DialogHeader>
                    <UploadDocuments
                        storageSore={storageSore}
                        machine={machineStore.machine}
                    />
                    <Progress
                        value={storageSore.uploadProgress}
                        className="w-full"
                    />

                    <DialogFooter></DialogFooter>
                </DialogContent>
            </Dialog>
        )
    }
)

export default UploadDialog

这是我的控制台日志:

StorageStore.ts:22 call setProgress 7.267071378513999
   StorageLoader.ts:62 Upload progress api: 7.267071378513999%
   StorageStore.ts:22 call setProgress 21.614878971990358
   StorageLoader.ts:62 Upload progress api: 21.614878971990358%
   StorageStore.ts:22 call setProgress 22.546554789748562
   StorageLoader.ts:62 Upload progress api: 22.546554789748562%
   StorageStore.ts:22 call setProgress 26.83226355143631
   StorageLoader.ts:62 Upload progress api: 26.83226355143631%
   StorageStore.ts:22 call setProgress 30.372631658917488
   StorageLoader.ts:62 Upload progress api: 30.372631658917488%
   StorageStore.ts:22 call setProgress 32.04964813088226
   StorageLoader.ts:62 Upload progress api: 32.04964813088226%
   StorageStore.ts:22 call setProgress 33.540329439295384
   StorageLoader.ts:62 Upload progress api: 33.540329439295384%
   StorageStore.ts:22 call setProgress 38.198708528086414
   StorageLoader.ts:62 Upload progress api: 38.198708528086414%
   StorageStore.ts:22 call setProgress 41.366406308464306
   StorageLoader.ts:62 Upload progress api: 41.366406308464306%
   StorageStore.ts:22 call setProgress 44.16143376173892
   StorageLoader.ts:62 Upload progress api: 44.16143376173892%
   StorageStore.ts:22 call setProgress 47.14279637856518
   StorageLoader.ts:62 Upload progress api: 47.14279637856518%
   StorageStore.ts:22 call setProgress 50.31049415894307
   StorageLoader.ts:62 Upload progress api: 50.31049415894307%
   StorageStore.ts:22 call setProgress 54.78253808418246
   StorageLoader.ts:62 Upload progress api: 54.78253808418246%
   StorageStore.ts:22 call setProgress 59.627252336525125
   StorageLoader.ts:62 Upload progress api: 59.627252336525125%
   StorageStore.ts:22 call setProgress 64.09929626176452
   StorageLoader.ts:62 Upload progress api: 64.09929626176452%
   StorageStore.ts:22 call setProgress 68.94401051410718
   StorageLoader.ts:62 Upload progress api: 68.94401051410718%
   StorageStore.ts:22 call setProgress 73.97505993000149
   StorageLoader.ts:62 Upload progress api: 73.97505993000149%
   StorageStore.ts:22 call setProgress 78.81977418234415
   StorageLoader.ts:62 Upload progress api: 78.81977418234415%
   StorageStore.ts:22 call setProgress 83.66448843468682
   StorageLoader.ts:62 Upload progress api: 83.66448843468682%
   StorageStore.ts:22 call setProgress 88.69553785058113
   StorageLoader.ts:62 Upload progress api: 88.69553785058113%
   StorageStore.ts:22 call setProgress 93.72658726647543
   StorageLoader.ts:62 Upload progress api: 93.72658726647543%
   StorageStore.ts:22 call setProgress 98.5713015188181
   StorageLoader.ts:62 Upload progress api: 98.5713015188181%
   StorageStore.ts:22 call setProgress 100 StorageLoader.ts:62 Upload
   progress api: 100% StorageLoader.ts:67 Upload successful

谢谢你

reactjs typescript mobx-react
1个回答
0
投票

我发现了我的问题,我忘记在店里了

constructor(storageLoader: IStorageLoader, machineStore: IMachineStore) {
    makeAutoObservable(this)
}
© www.soinside.com 2019 - 2024. All rights reserved.