Skip to content

react中的redux

redux是一个状态管理工具库

ts
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
import { Provider } from 'react-redux'
import { store } from './store'

ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
  <Provider store={store}>
    <App />
  </Provider>,
)
ts
import { configureStore } from '@reduxjs/toolkit' //因为官方推荐使用toolkit
import counterReducer from './modules/counter'
export const store=configureStore({ // configureStore类似createStore     
  reducer:counterReducer            //原来需要使用combineReducers合并reducers
                                    //还需要使用applyMiddleware 添加thunk来处理异步函数
})
ts
import { createSlice,createAsyncThunk } from '@reduxjs/toolkit'
export const counterSlice=createSlice({  
  name:'counter',
  initialState:{
    value: 0,
    data:[]
  },
  reducers:{
      increment(state,action){
         state.value+=action.payload
      }
  },
  extraReducers(builder){
      builder.addCase(fetchUsers.fulfilled,(state, action)=>{
          state.data = action.payload
      })    //监听请求成功
      builder.addCase(fetchUsers.rejected, (state, action) => {
    }) //监听请求失败
  }
})


//创建异步函数
export const fetchUsers = createAsyncThunk('posts/fetchPosts', async () => {
  const response = await fetch('xxxx/api/xxx')
  return response.json()
})

export default counterSlice.reducer