javascript - 初始化前无法访问“actionCreator”
问题描述
之前在 redux 中使用过基于 react 类的组件,想尝试使用具有类似 redux 文件夹结构的功能组件。但是当我将一个动作创建者导入一个组件时,比如“增量”到一个组件中以使用它与 useDispatch().dispatch() 它显示“增量”没有初始化。
动作/index.js
export const increment = () => {
return {
type: 'increment',
};
};
export const decrement = () => {
return {
type: 'decrement',
};
};
计数器.jsx
import classes from './Counter.module.css';
import { useSelector } from 'react-redux';
import { useDispatch } from 'react-redux';
import { increment, decrement } from '../redux/actions';
const Counter = () => {
const dispatch = useDispatch();
const toggleCounterHandler = () => {};
const counter = useSelector((state) => state.counter.counter);
console.log(increment);
const increment = () => {
dispatch();
};
const decrement = () => {
dispatch();
};
return (
<main className={classes.counter}>
<h1>Redux Counter</h1>
<div className={classes.value}>{counter}</div>
<div>
<button onClick={increment}>Increment</button>
<button onClick={decrement}>Decrement</button>
</div>
<button onClick={toggleCounterHandler}>Toggle Counter</button>
</main>
);
};
export default Counter;
在控制台记录增量功能期间,我得到:
ReferenceError:在初始化之前无法访问“增量”
解决方案
您需要调度操作
它可能看起来像这样,例如:
import classes from './Counter.module.css';
import { useSelector } from 'react-redux';
import { useDispatch } from 'react-redux';
import { increment, decrement } from '../redux/actions';
const Counter = () => {
const dispatch = useDispatch();
const toggleCounterHandler = () => {};
const counter = useSelector((state) => state.counter.counter);
const handleIncrement = () => dispatch(increment);
const handleDecrement = () => dispatch(decrement);
return (
<main className={classes.counter}>
<h1>Redux Counter</h1>
<div className={classes.value}>{counter}</div>
<div>
<button onClick={handleIncrement}>Increment</button>
<button onClick={handleDecrement}>Decrement</button>
</div>
<button onClick={toggleCounterHandler}>Toggle Counter</button>
</main>
);
};
export default Counter;
最终,问题的症结在于您已经定义increment
了两次,但您也没有调度该动作。
推荐阅读
- paypal - 贝宝沙箱 - 验证身份
- python-3.x - 根据用户输入动态过滤 Pandas DataFrame
- php - pcntl_fork 子进程内存
- scala - 如何将类型参数作为函数参数发送
- dfa - 为什么不接受此 DFA?
- javascript - 线性渐变不适用于 javascript
- java - 使用 AffineTransform 旋转图像会产生视觉上正确的像素,但 getRGB 不匹配
- flutter - 如何在模态底页中制作 CheckboxListTile?
- java - Kafka 流连续抛出 OutOfMemory 异常并停止工作
- java - 在 Java 中使用 OOP 实现二叉树