- 定义Slicer reducer
在Redux中,我们可以使用createSlice函数来定义Slicer reducer。以下是一个例子:
import { createSlice } from '@reduxjs/toolkit'
const initialState = {
product: null,
error: null,
loading: false,
}
export const productSlice = createSlice({
name: 'product',
initialState,
reducers: {
getProductStart: (state) => {
state.loading = true
},
getProductSuccess: (state, action) => {
state.product = action.payload
state.loading = false
},
getProductFailure: (state, action) => {
state.error = action.payload
state.loading = false
},
},
})
在这个例子中,我们定义了一个productSlice,并在reducers中定义了3个action:getProductStart、getProductSuccess和getProductFailure。这些action会改变slice中的state。例如,当执行getProductStart时,我们将state中的loading字段设置为true。
- 定义Store
在React中,我们需要创建store并将其传递给应用程序的根组件。以下是一个例子:
import { configureStore } from '@reduxjs/toolkit'
import { productSlice } from './productSlice'
const store = configureStore({
reducer: {
product: productSlice.reducer,
},
})
export default store
在这个例子中,我们创建了一个store,并在reducer中指定了我们定义的productSlice,定义为productReducer。
- 在组件中使用store
在React中,我们可以使用connect函数将store中的state和action映射到组件的props中。以下是一个例子:
import { connect } from 'react-redux'
import { getProduct } from './productSlice'
const Product = ({ product, error, loading, getProduct }) => {
useEffect(() => {
getProduct()
}, [getProduct])
if (loading) {
return <div>Loading...</div>
}
if (error) {
return <div>{error.message}</div>
}
return (