Javascript 使用redux时,应首选哪种生命周期方法?

Javascript 使用redux时,应首选哪种生命周期方法?,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,从redux store in props获取数据时,应首选哪种生命周期方法 我不确定您的组件是如何编写的,但遵循的一般模式是将组件连接到redux应用商店,并将应用商店中的值映射到组件道具 从那里,您的组件将订阅存储中的数据,您可以在componentDidMountlifecycle钩子上访问这些数据,并且可以在componentdiddupdate钩子中访问存储的任何其他更新。同样,道具上的任何更改都将触发组件上的重新渲染 const mapStateToProps = (state) =

从redux store in props获取数据时,应首选哪种生命周期方法

我不确定您的组件是如何编写的,但遵循的一般模式是将组件连接到redux应用商店,并将应用商店中的值映射到组件道具

从那里,您的组件将订阅存储中的数据,您可以在
componentDidMount
lifecycle钩子上访问这些数据,并且可以在
componentdiddupdate
钩子中访问存储的任何其他更新。同样,道具上的任何更改都将触发组件上的重新渲染

const mapStateToProps = (state) => ({
  data: state.data,
});

class Checkbox extends React.Component {

  componentDidMount() {
    const { data } = this.props;
  }

  componentDidUpdate(prevProps, prevState,) {

  }

}

export default connect(mapStateToProps)(Checkbox);

我不确定您的组件是如何编写的,但遵循的一般模式是将您的组件连接到redux商店,并将商店中的值映射到组件道具

从那里,您的组件将订阅存储中的数据,您可以在
componentDidMount
lifecycle钩子上访问这些数据,并且可以在
componentdiddupdate
钩子中访问存储的任何其他更新。同样,道具上的任何更改都将触发组件上的重新渲染

const mapStateToProps = (state) => ({
  data: state.data,
});

class Checkbox extends React.Component {

  componentDidMount() {
    const { data } = this.props;
  }

  componentDidUpdate(prevProps, prevState,) {

  }

}

export default connect(mapStateToProps)(Checkbox);

通常,您不需要任何生命周期方法,但这取决于您的用例以及您希望如何使用来自redux store的数据。通常,流程可以如下所示:

  • 将组件连接到redux应用商店
  • 将您的状态映射到道具,并在组件中获得所需的状态
  • 在componentDidMount()中,您将在props中获得数据
  • 若您想检查存储中的数据是否已更改,则可以使用componentDidUpdate(prevProps,prevState)方法进行检查
  • 下面是一个小演示:

    class YourComponent extends React.Component {
    
    
      componentDidMount() {
        console.log("You will get your data here:",this.props.data);
      }
    
      componentDidUpdate(prevProps, prevState,) {
        //Here you can compare data if it is changed or not.
        if(prevProps.data !== this.props.data){
            console.log("Your data is changed.");   
        }
      }
    
    }
    
    //Map your state to props
    const mapStateToProps = store =>{
        const data = store.data
        return {
            data
        }
    };
    
    //Connect your component with redux store.
    export default connect(mapStoreToProps)(YourComponent);
    

    通常,您不需要任何生命周期方法,但这取决于您的用例以及您希望如何使用来自redux store的数据。通常,流程可以如下所示:

  • 将组件连接到redux应用商店
  • 将您的状态映射到道具,并在组件中获得所需的状态
  • 在componentDidMount()中,您将在props中获得数据
  • 若您想检查存储中的数据是否已更改,则可以使用componentDidUpdate(prevProps,prevState)方法进行检查
  • 下面是一个小演示:

    class YourComponent extends React.Component {
    
    
      componentDidMount() {
        console.log("You will get your data here:",this.props.data);
      }
    
      componentDidUpdate(prevProps, prevState,) {
        //Here you can compare data if it is changed or not.
        if(prevProps.data !== this.props.data){
            console.log("Your data is changed.");   
        }
      }
    
    }
    
    //Map your state to props
    const mapStateToProps = store =>{
        const data = store.data
        return {
            data
        }
    };
    
    //Connect your component with redux store.
    export default connect(mapStoreToProps)(YourComponent);
    

    您可以使用componentdidmount并在要显示数据的部分显示加载程序。您能否解释您的用例,这取决于您的用例,因为您可以通过使用shouldComponentUpdate阻止生命周期以避免重新渲染,但检查嵌套较深的对象或数据结构会导致性能不佳。ComponentWillReceiveProps将在React 17中被弃用,但它仍使用不安全前缀。如果需要检查,则可以使用getDerivedStateFromProps。这完全取决于用例,如果您请求初始加载数据以获得一些响应,您可以在ComponentDidMount中调用它,您不需要添加任何生命周期方法来从redux存储获取数据。您的组件应该使用
    react redux
    包订阅redux store,只要状态发生任何变化,组件就会获得更新的状态。您可以使用componentdidmount并在要显示数据的部分显示加载程序。您能解释一下您的用例吗,这取决于您的用例是什么,由于您可以通过使用shouldComponentUpdate来阻止生命周期,以避免重新渲染,但检查深度嵌套的对象或数据结构会导致性能低下。ComponentWillReceiveProps将在React 17中被弃用,但它仍使用不安全前缀。如果需要检查,则可以使用getDerivedStateFromProps。这完全取决于用例,如果您请求初始加载数据以获得一些响应,您可以在ComponentDidMount中调用它,您不需要添加任何生命周期方法来从redux存储获取数据。您的组件应该使用
    react redux
    包订阅redux store,只要状态发生任何变化,组件就会获得更新状态。因此,当使用redux作为道具时,应该经常使用componentDIdUpdate和componentDidMount这两种生命周期方法?是的,这完全取决于您的用例。如果要将组件与存储连接,您的组件将在道具中获取数据,如果您想在数据更新后检查条件,您可以确保使用componentDIdUpdate。因此,componentDIdUpdate和componentDidMount是使用redux for props时应该经常使用的生命周期方法?是的,这完全取决于您的用例。如果您将组件与store连接,您的组件将在props中获取数据,并且您希望在数据更新后检查条件,您可以使用componentDIdUpdate来确保。