欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > react redux异步请求

react redux异步请求

2024/11/30 12:46:54 来源:https://blog.csdn.net/weixin_45561719/article/details/141429262  浏览:    关键词:react redux异步请求

1,创建store

//store/modules/channelStore.js
import { createSlice } from "@reduxjs/toolkit"
import axios from "axios"const channelStore = createSlice({name: 'channel',initialState: {channelList: []},reducers: {setChannels (state, action) {state.channelList = action.payload}}
})// 异步请求部分
const { setChannels } = channelStore.actions
// 单独封装一个函数 在函数内部return一个新函数
const fetchChannelList = () => {return async (dispatch) => {// 调用异步请求const res = await axios.get('http://geek.itheima.net/v1_0/channels')// 调用同步actioncreatedispatch(setChannels(res.data.data.channels))}
}export { fetchChannelList }const reducer = channelStore.reducerexport default reducer

2,导入子模块

// store/index.js
import { configureStore } from "@reduxjs/toolkit"
// 导入子模块reducer
import channelReducer from "./modules/channelStore"const store = configureStore({reducer: {channel: channelReducer}
})export default store

3,使用

import { fetchChannelList } from "./store/modules/channelStore"
import { useEffect } from "react"function App () {const { channelList } = useSelector(state => state.channel)// 得到dispatch函数const dispatch = useDispatch()useEffect(() => {dispatch(fetchChannelList())}, [dispatch])return (<div className="App"><ul>{channelList.map(item => <li key={item.id}>{item.name}</li>)}</ul></div>)
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com