Что именно является параметром для самого EFFECT в использованииEffect? - PullRequest
0 голосов
/ 25 января 2020

все еще сражается с useEffect.
Я прочитал несколько вещей и подумал, что я получил gr asp в конце массива зависимостей, но, видимо, нет.

Скажите, у меня есть это:

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);

1 Ответ

3 голосов
/ 25 января 2020

Это известно как затенение переменных , и это скорее общая концепция программирования, поэтому она не имеет ничего общего с перехватами или поведением useEffect. Если у вас есть переменная, названная в самой внутренней области, она переопределит любые переменные внешней области с тем же именем.

Обратный вызов useEffect не принимает параметр, поэтому state в вашем журнале, я полагаю, будет показать как undefined.

...