エラーが発生しています
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に保存したくありません。
このアプローチが正しいかどうかはわかりません。これをどのように処理できるか、またはこれを達成するためのより良い方法を教えてください。