我在試圖弄清楚如何在異步獲取后分配一組用戶時遇到問題。我有一個簡單的用戶界面,它有一個 id 和一個名字:
export interface User {
id: number
}
然后我有一個包含用戶陣列的 UserState:
export interface UserState {
loading: boolean
users: User[]
status: userStatus
error: string | null | undefined
}
在我的切片中,我有一個異步函式:
export const getUsers = createAsyncThunk(
'user/fetchUsers',
async (users: []) => {
const response = await fetchUsers();
return response.data;
}
);
我沒有減速器,但我有額外的減速器:
const userSlice = createSlice({
name: 'user',
initialState,
reducers: {},
extraReducers: builder => {
builder.addCase(getUsers.fulfilled, (state, {payload: users}) => {
state.loading = false
state.status = 'idle'
state.users = users //??? Or something like this...???
state.error = ''
})
}
})
為了清楚起見,我剛剛包含了一個 addCase,我試圖將 JSON 格式的預期用戶陣列分配到 users 陣列中。我嘗試了許多不同的語法變體,但出現以下錯誤:
型別 'User[]' 不可分配給型別 '(() => Element)[]'。型別“用戶”不可分配給型別“()=>元素”。型別“用戶”不匹配簽名“():元素”.ts(2322)
我不完全確定如何解決這個問題。我查看了許多教程和示例,但有許多不同的做事方式。我不確定我是否接近解決方案——我所在的地方有一個簡單而直接的解決方案——或者我是否離解決這個問題還很遙遠。我覺得好像我已經鉆了太多的兔子洞,最終創造了一個混合部分不太合適的怪物。
謝謝你的幫助!
uj5u.com熱心網友回復:
從錯誤訊息來看,您似乎正在嘗試將組件型別分配給User此處的界面 - 似乎您在某些時候一直在匯入User組件而不是您的User界面。仔細檢查您的匯入并找到錯誤的匯入將解決您的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/498345.html
標籤:javascript 数组 异步 还原 界面
