首页 > 解决方案 > 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);

标签: reactjsreact-hooksuse-effect

解决方案


这被称为变量遮蔽useEffect,这更像是一个通用的编程概念,因此与钩子或行为无关。如果您有一个在最内部范围内命名的变量,它将覆盖任何具有相同名称的外部范围变量。

useEffect回调不带参数,因此在state您的日志中我认为会显示为undefined.


推荐阅读