nextProps.history.push लॉगिन पर घटक प्रतिपादन कर रहे नहीं है

वोट
0

मुझे लगता है कि रीडायरेक्ट उपयोगकर्ता साइन इन करने पर डैशबोर्ड पर एक उच्च आदेश घटक है। इस मुद्दे को फिर से डैशबोर्ड रीडायरेक्ट पर गाया नहीं जा रहा है।

    static getDerivedStateFromProps(nextProps) {
      if (nextProps.user.isAuthenticated) {
        nextProps.history.push(/dashboard);

      }
      if (nextProps.errors) {
        return { errors: nextProps.errors };
      }
      return null;
    }

चाहेंगे किसी को क्या समस्या हो सकती है पता है? मैं जिस तरह से हैश रूटर उपयोग कर रहा हूँ

isAuthenticated (FullCode)

import React, { Component } from react;
import { connect } from react-redux;
import {  initLogin } from ../../actions/userActions;

export interface authHocProps {
  user?: any;
  history?: any;
  initLogin: () => void;
}
export interface authState {
  errors: object;
}
export default function(WrappedComponent) {
  class IsAuth extends Component<authHocProps, authState> {
    //   this line is magic, redirects to the dashboard after user signs up
    // this replace getDerivedStateFromPropss
    static getDerivedStateFromProps(nextProps) {
      if (nextProps.user.isAuthenticated) {
        nextProps.history.push(/dashboard);

      }
      if (nextProps.errors) {
        return { errors: nextProps.errors };
      }
      return null;
    }
    ourState: authState = {
      errors: {},
    };
    componentDidMount() {
      this.props.initLogin();
      if (this.props.user.isAuthenticated) {
        this.props.history.push(/dashboard);
      }

    }
    render() {
      return <WrappedComponent {...this.props} />;
    }
  }
  const mapStateToProps = (state: any) => ({
    user: state.user,
  });
  const mapDispatchToProps = (dispatch: any) => ({
    initLogin: () => dispatch(initLogin()),
  });
  return connect(mapStateToProps, mapDispatchToProps)(IsAuth);
}
13/01/2020 को 23:51
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
2

लगता है आपकी समस्या की तरह तथ्य यह है कि आप उपयोग करने का प्रयास कर रहे हैं की वजह से हो सकता है getDerivedStateFromPropsअपने उद्देश्य का अलावा कुछ के लिए। के आधार पर डॉक्स , ऐसा लगता है जैसे यह दुष्प्रभाव के लिए जगह नहीं है, बल्कि लक्ष्य अद्यतन राज्य के लिए एक वस्तु वापस जाने के लिए है। यहां तक कि अपने कोड को देख यद्यपि मुझे यकीन है कि के लिए नहीं कह सकता मैं जानता हूँ कि क्यों यह काम नहीं कर रहा है, मैं सही जीवन चक्र विधि आप बहुत अच्छी तरह से आपकी समस्या का समाधान हो सकता है का उपयोग करके कि लगता।

मुझे लगता है कि componentDidUpdateयहाँ का उपयोग करने के लिए सही जीवन चक्र तरीका होगा और यह इस तरह एक छोटे से कुछ ऐसा दिखाई देगा।


componentDidUpdate(prevProps) {
    if (prevProps.user.isAuthenticated) {
        prevProps.history.push("/dashboard");
    }
}
14/01/2020 को 00:15
का स्रोत उपयोगकर्ता

वोट
0

धन्यवाद सही दिशा में मेरे लिए @Chaim, ऐसा करके इसे ठीक करने में सक्षम था

componentDidUpdate(prevProps){
  if(prevProps.user.isAuthenticated !== this.props.user.isAuthenticated){
    this.props.history.push("/dashboard");
  }
  if (prevProps.errors) {
    this.setState({
      errors: prevProps.errors
    })
  }

}

इसके अलावा का उपयोग करके <Router>बजाय<HashRouter>

14/01/2020 को 03:49
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more