React Native 我正在尝试将参数传递给API,通过使用@reduxjs/toolkit,API中没有接收到参数

o2rvlv0m  于 2023-05-29  发布在  React
关注(0)|答案(1)|浏览(165)

我尝试使用@reduxjs/toolkit在react native中实现可滚动分页,最初,我在useEffect中调用一个API,它正在调度一组项目,然后在滚动时,我调用一个函数'loadMoreItem'来调度一组新的项目,同时调度fetchLoadContent,我在调用API时传递了一组参数,但它没有接收我的参数。我已经通过consoling仔细检查了传递的参数是否正确显示。但它没有在fetchLoadContent函数中接收。相反,它说
{“abort”:[函数abort],“dispatch”:【函数调度】,“extra”:undefined,“fulfillWithValue”:[Function fulfillWithValue],“getState”:[Function getState],“rejectWithValue”:[Function rejectWithValue],“requestId”:“W2 M9 L4 Q43 YiNsziN 6ptm-",“信号”:{}}

//component 
     const loadMoreItem = () => {
        dispatch(fetchLoadContent(
            id,
            keys.PKM,
            keys.SKM
            keys.BelongsToLanguage,
            keys.ContentCreatedAt
            console.log(id, keys.PKM, keys.SKM, 
            keys.BelongsToLanguage, keys.ContentCreatedAt) 
            //By consoling here, Datas are displaying properly
        ))
    }
   
    //Slice reducer
    export const fetchLoadContent = createAsyncThunk('loadContent', async (id, PKM, SKM, BelongsToLanguage, ContentCreatedAt) => {
    console.log(id,PKM,SKM, BelongsToLanguage,ContentCreatedAt )// here, It was not receiving

    const res = await fetch(URL + `languages/${id}/recent-content?PKM=${PKM}&SKM=${SKM}&BelongsToLanguage=${BelongsToLanguage}&ContentCreatedAt=${ContentCreatedAt}`,
        {
            headers: {
                'x-api-key': 'xxxxxxxx'
            },
        })
    const results = await res.json();
    return results;
})
b09cbbtk

b09cbbtk1#

请看一下RTK的createAsyncThunkdocumentation。传递的函数与预期的签名不匹配。
所有当前参数(idPKMSKM等)都应压缩为单个arg对象,第二个参数应为thunkAPI对象,该对象由RTK自动传递。
此外,如果您正在执行大量API工作,请考虑使用RTK Query。它内置于RTK中,使管理大型API变得更加容易。
根据您的请求,这里有一个async thunk定义的示例:

export const fetchLoadContent = createAsyncThunk('loadContent', async (arg, thunkAPI) => {
  const { id, PKM, SKM, BelongsToLanguage, ContentCreatedAt } = arg;

  const res = await fetch(URL + `languages/${id}/recent-content?PKM=${PKM}&SKM=${SKM}&BelongsToLanguage=${BelongsToLanguage}&ContentCreatedAt=${ContentCreatedAt}`,
  {
    headers: {
      'x-api-key': 'xxxxxxxx'
    },
  })

  const results = await res.json();
  return results;
});

// In your component:
dispatch(fetchLoadContent({
  id: something,
  PKM: something,
  SKM: something,
  BelongsToLanguage: something,
  ContentCreatedAt: something,
}));

我不知道如果你在使用官方文档时遇到麻烦,这会有多大价值,但希望它能有所帮助。RTK有很多工作要做(但它有很好的文档),我建议您在尝试任何复杂的实现之前先熟悉一下文档。

相关问题