reactjs - useEffect 中 EFFECT 本身的参数到底是什么?
问题描述
还在与useEffect
.
我读了一些东西,并认为我最后掌握了依赖项数组,但显然没有。
说,我有这个:
const StructRequestable = ({ struct, state, requestDataMap }) => {
useEffect(
() => {
console.log("Redux state is", state);
},
[state]
);
return (
<div> Soggy pasta</div>
)}
...
const mapStateToProps = state => {
return {
state: state
}
};
export default connect(mapStateToProps, null)(StructRequestable);
而且我希望这可以作为state
更改的记录器,而不是其他任何东西,它确实如此!
现在,为什么这(下)不起作用,有什么区别?我认为下面的版本是正确的,但显然添加这个参数会改变内部的?跟效果的范围有关系吗?感谢您的任何提示!
const StructRequestable = ({ struct, state, requestDataMap }) => {
useEffect(
(state) => { // <<<<<<<<<<<<<<<<<<<<ADDED STATE HERE. NOTHING ELSE.
console.log("Redux state is", state);
},
[state]
);
return (
<div> Soggy pasta</div>
)}
...
const mapStateToProps = state => {
return {
state: state
}
};
export default connect(mapStateToProps, null)(StructRequestable);
解决方案
这被称为变量遮蔽useEffect
,这更像是一个通用的编程概念,因此与钩子或行为无关。如果您有一个在最内部范围内命名的变量,它将覆盖任何具有相同名称的外部范围变量。
useEffect
回调不带参数,因此在state
您的日志中我认为会显示为undefined
.
推荐阅读
- php - Laravel 5.5 首次尝试后重定向到登录页面
- notepad++ - Notepad++:禁用旧标签但记住最后一行
- django - 基本模板上的 div 未出现在扩展中
- javascript - .map & .slice 数据集中的唯一值
- node.js - req.body.[name] 未定义
- c - 使用结果偶向量进行高斯归约
- javascript - 便携式电子应用程序每次打开时都会提取到不同的文件夹中
- reactjs - 如何使用带有快照的酶来测试 reduxForm 组件?
- java - java.time.format.DateTimeParseException:无法在索引 2 处解析文本“13.05.2018”
- jquery - 在 jquery 中使用更多的 css 属性