【问题标题】:can't console log state from reducer function?不能从减速器功能控制台日志状态?
【发布时间】:2021-12-22 10:33:59
【问题描述】:

我无法弄清楚为什么状态没有随着 React 中的这个 reducer 函数设置而改变。我只是想从 reducer 函数控制台记录新状态?

const [lessonState, dispatchLesson] = useReducer(lessonReducer, {
    lesson: 0,
    isComplete: false,
  });

const lessonReducer = (state, action) => {
  if (action.type === "UPDATE") {
    return { lesson: action.lesson, isComplete: true };
  }
};

const initializeLesson = () => {
    dispatchLesson({ type: "UPDATE", lesson: 2 });
    console.log(lessonState);<------
};


//other stuff//
export default function Dashboard() {

  useEffect(() => {
    context.initializeCourse();
  }, []);

  return (
    <Fragment>
      <div className="dashboard">
        <h1>Hello</h1>
      </div>
    </Fragment>
  );
}

【问题讨论】:

  • 您是否面临任何问题,或者您只想在立即调度后查看减速器状态?
  • 我只是想看看更新的状态,我正在学习

标签: reactjs console.log reducers use-reducer


【解决方案1】:

在立即调度它后你不能得到更新的减速器状态。要获取更新状态数据,您可以执行以下操作:

  useEffect(() => {
    console.log("lessonState", lessonState);
  }, [lessonState]);

所以当状态更新时,这个 useEffect 会被触发,你会得到更新后的状态。

【讨论】:

  • 那么它在技术上更新了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-14
  • 1970-01-01
  • 2021-11-19
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多