我需要使用redux thunk和axios从我的API中获取数据. 但我在控制台内遇到了这个错误.
在这种情况下,我有一个marketSlice
,我想用API数据更新我的state.market
.
marketSlice.js
import { createSlice } from '@reduxjs/toolkit'
import { createAsyncThunk } from '@reduxjs/toolkit';
import axios from 'axios'
// Thunk action to fetch data from the server
export const fetchMarketData = (requestData) => createAsyncThunk(
'market/fetchData', () => {
const url = 'http://localhost:8000/api/market'
const headers = {
'Content-Type': 'application/json',
};
return axios
.post(url, requestData, {headers})
.then(response => response.data)
}
);
export const marketSlice = createSlice({
name: 'market',
initialState: {
market: null,
loading: false,
error: '',
},
reducers: {},
extraReducers: (builder) => {
builder.addCase(fetchMarketData.pending, (state) => {
state.loading = true;
state.error = null;
})
builder.addCase(fetchMarketData.fulfilled, (state, action) => {
state.loading = false;
state.market = action.payload
})
builder.addCase(fetchMarketData.rejected, (state) => {
state.loading = false;
state.error = "Request Failed.";
});
},
});
store.js
import { configureStore } from '@reduxjs/toolkit'
import { marketSlice } from './marketSlice.js'
export const store = configureStore({
reducer: {
market: marketSlice.reducer
},
middleware: (getDefaultMiddleware)=> getDefaultMiddleware({
serializableCheck: false,
}),
})
App.jsx
import { useDispatch } from 'react-redux'
import { useEffect } from 'react'
import { fetchMarketData } from './redux/marketSlice.js'
export default function App() {
const dispatch = useDispatch();
useEffect(() => {
const requestData = {
exchange: "binance"
}
dispatch(fetchMarketData(requestData));
}, [dispatch]);
return (
<>
Something...
</>
)
}