網站首頁 編程語言 正文
下載依賴
npm i @reduxjs/toolkit
npm i react-redux
創建store和切片
切片
import { createSlice } from '@reduxjs/toolkit'
const carlistSlice = createSlice({
name: 'posts',
initialState:{
list:[
{
title:"123",
price:40,
fen:1,
}
],
shopcar:[]
},
reducers: {
addobj(state,{ payload }){
state.shopcar.push(payload)
}
}
})
export const { addobj } = carlistSlice.actions
export default carlistSlice.reducer
創建store
import { configureStore } from '@reduxjs/toolkit'
import carlistSlice from './carlistSlice/carlistSlice'
const store = configureStore({
reducer: {
carlist: carlistSlice
}
})
export default store
配置根路徑
import React from 'react';
import ReactDOM from 'react-dom/client';
import { RouterProvider } from 'react-router-dom'
import router from './router';
import { Provider } from 'react-redux';
import store from './state';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<Provider store={store}>
<RouterProvider router={router} />
</Provider>
</React.StrictMode>
);
組件內部使用
import React, { useState,useEffect } from 'react';
import { connect } from 'react-redux'
import './app.scss'
import { addobj } from './state/carlistSlice/carlistSlice'
import store from './state/index'
import { useNavigate } from 'react-router-dom'
const App = state => {
const navigate = useNavigate()
const [list, setlist] = useState([]);
useEffect(() => {
setlist([...state.carlist])
}, []);
const gailiang = idx =>{
setliangnum(idx)
if(idx !== 0){
console.log(idx);
let copylist = [...state.carlist]
let newlist = copylist.filter(item =>{
return item.fen === idx
})
setlist([...newlist])
}else{
setlist([...state.carlist])
}
}
const additem = ite =>{
store.dispatch(addobj({...ite,num:1,checked:false}))
}
return (
<div id='app'>
<div style={{ height: "50px" }}></div>
{
list.map((item, index) => (
<div className='app-body' key={index}>
<div className='app-body-one'>
<img style={{ width: "120px" }} alt='123' src='/logo192.png' />
<div>
<div>{item.title}</div>
<div>{item.price}</div>
</div>
</div>
<button onClick={()=>additem(item)}>+</button>
</div>
))
}
<button onClick={()=>navigate('/shopcar')}>去購物車</button>
</div>
);
}
const aaa = state => {
return {
carlist: state.carlist.list
}
}
const bbb = state => {
return {}
}
export default connect(aaa, bbb)(App);
原文鏈接:https://blog.csdn.net/m0_64544033/article/details/131157966
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-03-26 在ASP.Net?Core應用程序中使用Bootstrap4_實用技巧
- 2022-10-04 C語言指針和數組深入探究使用方法_C 語言
- 2022-04-27 Python線程之線程安全的隊列Queue_python
- 2022-05-20 Maven的配置及使用
- 2022-11-30 ASP.NET?MVC實現本地化和全球化_實用技巧
- 2022-12-23 Android入門之Menu組件的使用教程詳解_Android
- 2022-10-12 python?time時間庫詳解_python
- 2022-12-09 在DOS界面如何運行python的py文件_python
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支