-1

エラーが発生しています

Property 'then' does not exist on type 'ThunkAction<Promise<string>

スライスの AppThunk から promise を返そうとしています。

以下は私がセットアップしたコードで、いくつかの同じ質問をして、そこで与えられたいくつかの提案に従いましたが、それでも何が間違っているのかわかりませんでした.

store.ts

import { configureStore, Action } from '@reduxjs/toolkit'
import { useDispatch } from 'react-redux'
import { ThunkAction } from 'redux-thunk'

import rootReducer, { RootState } from './rootReducer'

const store = configureStore({
  reducer: rootReducer
})

if (process.env.NODE_ENV === 'development' && module.hot) {
  module.hot.accept('./rootReducer', () => {
    const newRootReducer = require('./rootReducer').default
    store.replaceReducer(newRootReducer)
  })
}

export type AppDispatch = typeof store.dispatch
export const useAppDispatch = () => useDispatch<AppDispatch>()


export type AppThunk<ReturnType = void> = ThunkAction<
  ReturnType,
  RootState,
  unknown,
  Action<string>
>

export default store

mySlice.ts

import { AppThunk } from 'app/store'

// ...
// my reducer logic is here 
// ...

export const fetchIssuePromise = (): AppThunk<Promise<string>> => async (dispatch) => {
  return Promise.resolve("string")
}

これをコンポーネントで使用しています。

MyComponent.tsx

import React, { useEffect } from 'react'
import { fetchIssue, fetchIssuePromise } from 'features/mySlice.ts'
import {  useDispatch } from 'react-redux'

export const MyComponent = ({
const dispatch = useDispatch()

useEffect(() => {
      dispatch(fetchIssuePromise()).then(() => {
      // My logic here.
      })
  }, [dispatch])
  
  
})

redux状態で保存し、セレクターを使用してこれを行うことができることを知っています。しかし、いくつかのデータ、特にサーバーからの検証エラーをreduxに保存したくありません。

このアプローチが正しいかどうかはわかりません。これをどのように処理できるか、またはこれを達成するためのより良い方法を教えてください。

4

1 に答える 1