具有如下代码(不是实际的工作代码,只是为了给您一个想法):
import { useDispatch } from 'react-redux'
const dispatch = useDispatch()
interface IProp {
prop: number
}
const [data, setData] = useState<number[]>([])
async ({ prop }: IProp) => {
const data = await dispatch<any>(
fetchData({
prop
})
)
setData(data)
}
fetchData类型
fetchData({ prop }: IProp): (dispatch, getState) => Promise<number[]>
如何设置dispatch
的类型,该类型最终将返回数字数组? Any
是临时解决方法
编辑:
fetchData
实际上是一个动作。我不会在这里详细介绍,但让我们假设它看起来像这样:
export const fetchData = ({
prop
}) => async (dispatch, getState) => {
// do something store-related like dispatching other actions or getting values from store
// get `extra`
const { data } = await actualFetch({
prop,
extra
})
return data
}
答案 0 :(得分:0)
dispatch
仅返回您作为参数传递的操作。 https://github.com/reduxjs/redux/blob/master/src/createStore.ts#L257
没有理由等待它,它也不会包含获取的数据。
正如Maciej Sikora所提到的,您根本不需要redux。如果出于某种原因仍要将数据传递到redux,请在获取并处理数据后进行处理。
interface Props {
prop: number
}
function SomeComponent (props: Props) {
const [data, setData] = useState<number[]>([]);
const onClick = async () => {
const data = await fetchData(props);
setData(data);
};
return <div>
{data}
<button onClick={onClick}>Fetch!</button>
</div>;
}