Reactjs 动作调度是否在react流的后台运行?

Reactjs 动作调度是否在react流的后台运行?,reactjs,redux,react-redux,Reactjs,Redux,React Redux,有谁能帮我理解一下,如果我有一个组件,并且假设在构造函数中我调度了一个动作,那么有两种情况是可能的 动作被调度,我们的组件变得理想,这意味着在动作完成之前,其他生命周期挂钩不会被执行或 动作被分派进来,我们的组件悄悄地通过其他钩子继续,等待道具改变 是哪一种情况 简而言之,动作在后台调度,或者我们的组件等待动作完成 构造函数本质上不是异步的 动作被分派进来,我们的组件通过其他钩子继续运行 安静地等待道具的改变 这是正确的说法 将调度该操作,并触发其他生命周期方法 使用setTimeout 查看其

有谁能帮我理解一下,如果我有一个组件,并且假设在构造函数中我调度了一个动作,那么有两种情况是可能的

  • 动作被调度,我们的组件变得理想,这意味着在动作完成之前,其他生命周期挂钩不会被执行

  • 动作被分派进来,我们的组件悄悄地通过其他钩子继续,等待道具改变

  • 是哪一种情况

    简而言之,动作在后台调度,或者我们的组件等待动作完成


    构造函数本质上不是异步的

    动作被分派进来,我们的组件通过其他钩子继续运行 安静地等待道具的改变

    这是正确的说法

    将调度该操作,并触发其他生命周期方法

    使用
    setTimeout

    查看其他生命周期如何以异步方式触发

    import React,{Component}来自“React”;
    导出默认类测试扩展组件{
    建造师(道具){
    超级(道具);
    控制台日志(“制造”);
    设置超时(()=>{
    控制台日志(“等待”);
    }, 3000);
    }
    componentDidMount(){
    控制台日志(“安装”);
    }
    render(){
    回归试验;
    }
    }
    
    这就是
    调度
    的工作方式


    希望能回答您的问题:)

    构造函数本质上不是异步的

    动作被分派进来,我们的组件通过其他钩子继续运行 安静地等待道具的改变

    这是正确的说法

    将调度该操作,并触发其他生命周期方法

    使用
    setTimeout

    查看其他生命周期如何以异步方式触发

    import React,{Component}来自“React”;
    导出默认类测试扩展组件{
    建造师(道具){
    超级(道具);
    控制台日志(“制造”);
    设置超时(()=>{
    控制台日志(“等待”);
    }, 3000);
    }
    componentDidMount(){
    控制台日志(“安装”);
    }
    render(){
    回归试验;
    }
    }
    
    这就是
    调度
    的工作方式


    希望能回答你的问题:)

    视情况而定。如果道具/状态没有发生任何实质性的变化(什么是实质性的变化可能是一个巨大的主题,我现在不能说),并且该组件的父级没有得到重新渲染,那么在操作完成之前,所有生命周期挂钩都不会被执行


    在用Reactjs编写的复杂应用程序中,要减少重新渲染,这可能需要付出巨大的努力。但在一个小型应用程序中,从某种意义上说,重新渲染对浏览器/webview没有太大的负面影响。在这种情况下,您可以自由地假设这些生命周期挂钩永远不会执行。但要小心可能会损害应用程序的副作用。

    这取决于具体情况。如果道具/状态没有发生任何实质性的变化(什么是实质性的变化可能是一个巨大的主题,我现在不能说),并且该组件的父级没有得到重新渲染,那么在操作完成之前,所有生命周期挂钩都不会被执行


    在用Reactjs编写的复杂应用程序中,要减少重新渲染,这可能需要付出巨大的努力。但在一个小型应用程序中,从某种意义上说,重新渲染对浏览器/webview没有太大的负面影响。在这种情况下,您可以自由地假设这些生命周期挂钩永远不会执行。但是要小心可能会损害您的应用程序的副作用。

    谢谢您的回答,那么我是否应该假设操作取消锁定就像HTTP请求一样,我们不会等待响应,但无论如何都会继续。?谢谢您的回答,那么我是否应该假设操作取消锁定就像HTTP请求一样,我们不会等待响应,但无论如何要继续。?
    import React, { Component } from "react";
    
    export default class Test extends Component {
      constructor(props) {
        super(props);
        console.log("made");
        setTimeout(() => {
          console.log("wait");
        }, 3000);
      }
      componentDidMount() {
        console.log("mount");
      }
      render() {
        return <div>Test</div>;
      }
    }