reactjs - 无法通过中间件(createAsyncThunk)从我的 Rails 后端 api 获取数据到 redux-store
问题描述
我正在尝试从我的 rails 后端 API 获取数据到 redux 存储。当我在中间件 (createAsyncThunk) 中使用 console.log(data) 时,我可以看到数据。但是,我无法将其放入 redux 商店。
src/redux/医生切片
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
import API from '../api/api';
const initialState = [];
export const getDoctors = createAsyncThunk(
'doctors/getDoctors',
async (token) => {
const response = await fetch(`${API}/doctors`, {
headers: {
Authorization: `Bearer ${token}`,
},
});
console.log('responses', response);
if (!response.ok) throw new Error(response.statusText);
const data = await response.json();
console.log(data);
return data.doctors;
},
);
export const doctorsSlice = createSlice({
name: 'doctors',
initialState,
reducers: {},
extraReducers: {
[getDoctors.fulfilled]: (state, action) => action.payload,
},
});
export default doctorsSlice.reducer;
src/redux/存储
import { configureStore } from '@reduxjs/toolkit';
import doctorsReducer from './doctorsSlice';
export default configureStore({
reducer: {
doctors: doctorsReducer,
},
});
src/components/DoctorsList
import { useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { getDoctors } from '../redux/doctorsSlice';
const DoctorsList = () => {
const dispatch = useDispatch();
useEffect(() => {
dispatch(getDoctors());
}, [dispatch]);
const { doctors } = useSelector((state) => state.doctors);
return (
<div className="">
<h2>Doctors</h2>
</div>
);
};
export default DoctorsList;
src/组件/应用程序
import DoctorsList from './DoctorsList';
function App() {
return (
<div className="App">
<div className="content">
<DoctorsList />
</div>
</div>
);
}
export default App;
源/索引
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import './index.css';
import App from './components/App';
import store from './redux/store';
import { getDoctors } from './redux/doctorsSlice';
store.dispatch(getDoctors);
ReactDOM.render(
<React.StrictMode>
<Provider store={store}>
<App />
</Provider>
</React.StrictMode>,
document.getElementById('root'),
);
我遵循了 redux 文档。我希望在店内看到数据。但我得到一个空数组。欢迎任何关于我如何解决这个问题的帮助、支持和建设性的批评。
解决方案
在getDoctors
函数中。我应该return data
在函数的最后一行。相反,我最初返回data.doctors
的是不包含数据的。
推荐阅读
- javascript - 在 React 中返回带有图像的图像标签
- r - 当其中一个具有 aspect.ratio = 1 时对齐两个 ggplot
- r - 如何在 data.table 中使用 str_glue(环境问题)
- azure - 是否可以在托管 AKS 中包含自定义节点 (Raspi Pi)?
- javascript - 本地存储管理。使用 .map() 和 .splice() 逐一删除项目,或者全部清除并插入新的更新数组?
- android - 通过蓝牙访问小米手环
- python - 2x 嵌套的 Tensorflow 自定义层导致可训练参数为零
- azure - 将数据流参数传递到 Azure 数据工厂中的接收键列
- linux - 无法 ping 在 Qemu 上运行的 linux 映像
- java - SSLException:握手失败