react/redux 应用程序 - 从 redux 切片获取操作以响应组件时出现问题
react/redux app - issue when getting actions from redux slice to react component
嗨,我正在使用 reduxtoolkit 创建一个 React 应用程序,它具有添加到购物车的功能我正在尝试使用 redux 状态更新添加到购物车按钮,当我正在获取递增和递减的 redux 操作时,它显示错误 ReferenceError:初始化前无法访问 'selectadto' 不确定我在这里遗漏了什么,如果有人知道请检查
我的组件在下面
import React, { useState, useEffect } from "react";
import { useDispatch, useSelector } from "react-redux";
import { selectAddSlice } from "./features/auth/addsSlice";
import { selectadto } from "./features/auth/addtoSlice";
import { increment, decriment } from "./features/auth/addtoSlice";
const Addtocart = (props) => {
const dispatch = useDispatch();
const selectedAdds = useSelector(selectAddSlice);
const selectedTodo = useSelector(selectadto);
useEffect(() => {
console.log(selectedTodo);
}, [selectedTodo]);
const onIncrementclicked = (e) => {
e.preventDefault();
dispatch(increment());
};
const onDecrimentclicked = (e) => {
e.preventDefault();
dispatch(decriment());
};
return (
<div>
{selectedAdds.map((add) => (
<div key={add.id}>
<div> {add.addname}</div>
<div> {add.price}</div>
<button onClick={onIncrementclicked()}>{selectedTodo}</button>
<button onClick={onDecrimentclicked()}>{selectedTodo}</button>
</div>
))}
</div>
);
};
export default Addtocart;
我的 redux 切片如下
import { createSlice } from '@reduxjs/toolkit';
export const addtoSlice = createSlice({
name: 'addto',
initialState: {
currentamount: 0
},
reducers: {
increment: state => {
state.curentamount++
},
decriment: state => {
state.currentamount--
},
},
});
export const { increment, decriment } = addtoSlice.actions;
export const selectadto = state => state.addto.currentamount;
export default addtoSlice.reducer;
下面是错误信息
TypeError: Cannot read property 'preventDefault' of undefined
onIncrementclicked
src/Addtocart.js:17
14 | console.log(selectedTodo);
15 | }, [selectedTodo]);
16 | const onIncrementclicked = (e) => {
> 17 | e.preventDefault();
| ^ 18 | dispatch(increment());
19 | };
20 | const onDecrimentclicked = (e) => {
在 const selectadto = useSelector(selectadto);
中,您在使用名为 selectadto
的缩减程序时声明了一个名为 selectadto
的新变量。您可能应该给两者之一起不同的名称。
嗨,我正在使用 reduxtoolkit 创建一个 React 应用程序,它具有添加到购物车的功能我正在尝试使用 redux 状态更新添加到购物车按钮,当我正在获取递增和递减的 redux 操作时,它显示错误 ReferenceError:初始化前无法访问 'selectadto' 不确定我在这里遗漏了什么,如果有人知道请检查
我的组件在下面
import React, { useState, useEffect } from "react";
import { useDispatch, useSelector } from "react-redux";
import { selectAddSlice } from "./features/auth/addsSlice";
import { selectadto } from "./features/auth/addtoSlice";
import { increment, decriment } from "./features/auth/addtoSlice";
const Addtocart = (props) => {
const dispatch = useDispatch();
const selectedAdds = useSelector(selectAddSlice);
const selectedTodo = useSelector(selectadto);
useEffect(() => {
console.log(selectedTodo);
}, [selectedTodo]);
const onIncrementclicked = (e) => {
e.preventDefault();
dispatch(increment());
};
const onDecrimentclicked = (e) => {
e.preventDefault();
dispatch(decriment());
};
return (
<div>
{selectedAdds.map((add) => (
<div key={add.id}>
<div> {add.addname}</div>
<div> {add.price}</div>
<button onClick={onIncrementclicked()}>{selectedTodo}</button>
<button onClick={onDecrimentclicked()}>{selectedTodo}</button>
</div>
))}
</div>
);
};
export default Addtocart;
我的 redux 切片如下
import { createSlice } from '@reduxjs/toolkit';
export const addtoSlice = createSlice({
name: 'addto',
initialState: {
currentamount: 0
},
reducers: {
increment: state => {
state.curentamount++
},
decriment: state => {
state.currentamount--
},
},
});
export const { increment, decriment } = addtoSlice.actions;
export const selectadto = state => state.addto.currentamount;
export default addtoSlice.reducer;
下面是错误信息
TypeError: Cannot read property 'preventDefault' of undefined
onIncrementclicked
src/Addtocart.js:17
14 | console.log(selectedTodo);
15 | }, [selectedTodo]);
16 | const onIncrementclicked = (e) => {
> 17 | e.preventDefault();
| ^ 18 | dispatch(increment());
19 | };
20 | const onDecrimentclicked = (e) => {
在 const selectadto = useSelector(selectadto);
中,您在使用名为 selectadto
的缩减程序时声明了一个名为 selectadto
的新变量。您可能应该给两者之一起不同的名称。