记录setState调用

时间:2018-01-05 21:24:20

标签: reactjs

在redux中,您可以控制日志记录在reducer中收到的操作以调试状态问题,是否有类似的方法使用setState api?

我有一个相当大的抽象代码库并尝试调试某个问题,而不是只在属性上查找setState调用

2 个答案:

答案 0 :(得分:2)

来自React docs:

  1. setState将回调作为第二个参数
  2.   

    setState()的第二个参数是一个可选的回调函数,它将在setState完成并重新呈现组件后执行

    因此,在回调函数中执行某些调试可能会有所帮助。

    1. 另一种方法是使用comonentDidUpdate
    2.   

      在更新发生后立即调用componentDidUpdate()。初始渲染不会调用此方法

           

      componentDidUpdate(prevProps, prevState)

      取决于你的逻辑,你可以在这里做同样的事情:

      componentDidUpdate(prevProps, prevState){
        if(this.state.foo !== prevState.foo){
          console.log('FOO')
        } 
      }
      

      希望它能帮到你

答案 1 :(得分:0)

假设您的组件正在扩展React Component,您可以在组件类中添加此方法以记录setState方法:

setState(newState) {
    const { state } = this;
    console.log('prevState ');
    console.log(state);

    console.log('newState ');
    console.log(newState);

    super.setState(newState);
  }