Javascript Can';t推上支柱“;历史";

Javascript Can';t推上支柱“;历史";,javascript,reactjs,react-router,Javascript,Reactjs,React Router,因此,在我的组件组织设置中,如果请求中有错误,我会将用户重定向到另一个页面。我试图这样做,并重定向用户。但是,我得到以下错误: OrganisSettings.js:33未捕获(承诺中)类型错误:无法读取未定义的属性“push” 很久以前,通过添加“withRouter”解决了这个错误,但这次并没有解决这个问题。 我真的找不到我的代码有什么问题 import React, { Component } from 'react' import {withRouter} from 'react-rou

因此,在我的组件组织设置中,如果请求中有错误,我会将用户重定向到另一个页面。我试图这样做,并重定向用户。但是,我得到以下错误:
OrganisSettings.js:33未捕获(承诺中)类型错误:无法读取未定义的属性“push”

很久以前,通过添加“withRouter”解决了这个错误,但这次并没有解决这个问题。 我真的找不到我的代码有什么问题

import React, { Component } from 'react'
import {withRouter} from 'react-router-dom'
import Dashboard from '../Dashboard'
import Axios from 'axios'
import * as Cookies from 'js-cookie'
import ErrorContainer from '../../components/ErrorContainer'
import { addAlgolia, handleChange } from 'utils'

export class OrganismSettings extends Component {

    constructor(props) {
        super(props);
        this.state = {loading: true, organism: [], name: "", description: "", address: "", picture: null}
        this.getOrganism = this.getOrganism.bind(this);
        this.handleChange = handleChange.bind(this);
        this.handleSubmit = this.handleSubmit.bind(this);
        this.handleChangePicture = this.handleChangePicture.bind(this);
    }

    componentDidMount() {
        this.getOrganism();
        addAlgolia()
    }

    getOrganism() {
        Axios.get('http://localhost:8000/api/organism/settings', {headers: {Accept: 'application/json', Authorization: 'Bearer ' + Cookies.get('token')}})
        .then((success) => {
            var organism = success.data.data.organism;
            this.setState({organism: success.data.data.organism, loading: false})
            this.setState({name: organism.name, description: organism.description, address: organism.address})
        }, (error) => {
            this.props.history.push('/organisme/creation')
        })
    }

      handleChangePicture(event) {
        this.setState({picture: event.target.files[0]})
    }

    handleSubmit(e) {
        e.preventDefault();
        var formData = new FormData();
        formData.append('name', this.state.name);
        formData.append('description', this.state.description);
        formData.append('address', this.state.address);
        formData.append('picture', this.state.picture);
        formData.append('_method', 'PATCH');
        var token = Cookies.get('token');
        Axios.post('http://localhost:8000/api/organism/settings', formData, {
            headers: {
                "Accept": 'application/json',
                "Authorization": `Bearer ${token}`,
            }
        }).then(
            (success) => {
                this.setState({loading: false});
                //this.props.history.push('/organisme')
            }, (error) => {
                this.setState({errors : error.response.data.data})
                if(error.response.data.redirect != "") {
                    this.props.history.push(error.response.data.redirect)
                }
            }
        )
    }

    render() {
        return (
            <Dashboard loading={this.state.loading}>
                <section className="section has-text-centered">
                    <div className="column is-offset-1 is-10">
                    <h1 className="title is-size-1 register-title">Paramètres de {this.state.name}</h1>
                        <section className="section organism-register">
                            <form encType="multipart/form-data" className="user-form fullbox-form" method="POST" onSubmit={this.handleSubmit}>
                                <div className="has-text-left input-fixer">
                                <label className="is-size-4">Nom de l'organisme : </label><input type="text" name="name" placeholder="Nom de l'organisme" value={this.state.name} onChange={this.handleChange}/>
                                <label className="is-size-4">Description de l'organisme : </label><textarea name="description" placeholder="Description de l'organisme" value={this.state.description} onChange={this.handleChange}/>
                                <label className="is-size-4">Adresse de l'organisme : </label><input id="address-input" type="text" name="address" value={this.state.address} onChange={this.handleChange}></input>
                                <label className="is-size-4">Ajouter le logo de votre organisme : </label>
                                <input type="file" name="picture" onChange={this.handleChangePicture} />
                                </div>
                                <ErrorContainer errors={this.state.errors} />
                                <button className="button is-primary has-text-left">Soumettre les changements</button>
                            </form>
                        </section>
                    </div>
                </section>
            </Dashboard>
        )
    }
}

export default withRouter(OrganismSettings)

import React,{Component}来自“React”
从“react router dom”导入{withRouter}
从“../Dashboard”导入仪表板
从“Axios”导入Axios
从“js cookie”导入*作为cookie
从“../../components/ErrorContainer”导入ErrorContainer
从“utils”导入{addAlgolia,handleChange}
导出类组织设置扩展组件{
建造师(道具){
超级(道具);
this.state={loading:true,organic:[],name:,description:,address:,picture:null}
this.get有机体=this.get有机体.bind(this);
this.handleChange=handleChange.bind(this);
this.handleSubmit=this.handleSubmit.bind(this);
this.handleChangePicture=this.handleChangePicture.bind(this);
}
componentDidMount(){
这个.getOrganism();
addAlgolia()
}
getOrganism(){
Axios.get()http://localhost:8000/api/organism/settings“,{标题:{接受:'application/json',授权:'Bearer'+Cookies.get('token')})
。然后((成功)=>{
var有机体=success.data.data.有机体;
this.setState({organic:success.data.data.organic,loading:false})
this.setState({name:organism.name,description:organism.description,address:organism.address})
},(错误)=>{
this.props.history.push(“/organime/creation”)
})
}
handleChangePicture(事件){
this.setState({picture:event.target.files[0]})
}
handleSubmit(e){
e、 预防默认值();
var formData=new formData();
formData.append('name',this.state.name);
formData.append('description',this.state.description);
formData.append('address',this.state.address);
formData.append('picture',this.state.picture);
formData.append(“U方法”、“补丁”);
var token=Cookies.get('token');
轴心柱http://localhost:8000/api/organism/settings,formData{
标题:{
“接受”:“应用程序/json”,
“授权”:`Bearer${token}`,
}
}).那么(
(成功)=>{
this.setState({loading:false});
//this.props.history.push(“/organime”)
},(错误)=>{
this.setState({errors:error.response.data.data})
if(error.response.data.redirect!=“”){
this.props.history.push(error.response.data.redirect)
}
}
)
}
render(){
返回(
Paramètres de{this.state.name}
组织名称:
组织描述:
组织地址:
Ajouter le logo de votre Organime:
索梅特雷酒店
)
}
}
使用路由器导出默认值(组织设置)
路由器:

import React, { Component } from 'react'
import {BrowserRouter as Router, Route, Switch} from 'react-router-dom'
import Navigation from './components/navigation/Navigation'
import HomepageHomepage from './pages/homepage/HomepageHomepage'
import Dashboard from './pages/Dashboard'
import NoMatch from './pages/NoMatch'
import Register from './pages/register/Register'
import RegisterVolunteer from './pages/register/RegisterVolunteer'
import RegisterOrganism from './pages/register/RegisterOrganism'
import EmailConfirmation from './pages/register/EmailConfirmation';
import EmailConfirmed from './pages/register/EmailConfirmed';
import Login from './pages/login/Login'
import DashboardHomepage from './pages/dashboard/DashboardHomepage';
import UserProfile from './pages/user/UserProfile'
import PrivateRoute from './PrivateRoute'
import Logout from './pages/Logout'
import AddOrganism from './pages/organization/AddOrganism'
import OfferCreation from './pages/organization/OfferCreation'
import OfferPage from './pages/organization/OfferPage'
import OrganismOffers from './pages/organization/OrganismOffers'
import ReactNotification from 'react-notifications-component'
import OrganismOffer from './pages/organization/OrganismOffer'
import "../src/css/app.scss"
import ClassicSearch from './pages/search/ClassicSearch'
import { OrganismSettings } from './pages/organization/OrganismSettings'
import WorkingOn from './pages/WorkingOn'
import InterestsIndex from './pages/admin/interests/InterestsIndex';
import AddInterest from './pages/admin/interests/AddInterest';
import ManageInterest from './pages/admin/interests/ManageInterest'
import EditUser from './pages/user/EditUser'
import SmartSearch from './pages/search/SmartSearch'
import AlternativeDashboardHomepage from './pages/dashboard/AlternativeDashboardHomepage';
export class App extends Component {
  render() {
    return (
        <Router>
          <ReactNotification />
          <div>
            <Switch>
            <PrivateRoute exact path="/profil/modifier">
                <EditUser />
              </PrivateRoute>
              <PrivateRoute exact path="/profil">
                <UserProfile />
              </PrivateRoute>
              <PrivateRoute exact path="/tableaudebord">
                {/* <DashboardHomepage /> */}
                <AlternativeDashboardHomepage />
              </PrivateRoute>
              <PrivateRoute reverse="true" exact path="/inscription">
                <Register />
              </PrivateRoute>
              <PrivateRoute reverse="true" exact path="/inscription/benevole">
                <RegisterVolunteer />
              </PrivateRoute>
              <PrivateRoute reverse="true" exact path="/connexion">
                <Login />
            </PrivateRoute>
            <PrivateRoute reverse="true" exact path="/inscription/organisme">
              <RegisterOrganism />
            </PrivateRoute>
            <PrivateRoute exact path="/recherche">
              <ClassicSearch />
            </PrivateRoute>
            <PrivateRoute exact path="/recherche-intelligente">
              <SmartSearch />
            </PrivateRoute>
            <PrivateRoute exact path="/offres/:id">
              <OfferPage />
            </PrivateRoute>
            <PrivateRoute exact path="/organisme/creation">
              <AddOrganism />
            </PrivateRoute>
            <PrivateRoute exact path="/organisme/offres/nouvelle">
              <OfferCreation />
            </PrivateRoute>
            <PrivateRoute exact path="/organisme/offres/:id">
              <OrganismOffer />
            </PrivateRoute>
            <PrivateRoute exact path="/organisme/offres">
              <OrganismOffers />
            </PrivateRoute>
            <PrivateRoute exact path="/organisme/parametres">
              <OrganismSettings />
            </PrivateRoute>
            <PrivateRoute path="/deconnexion">
              <Logout />
            </PrivateRoute>
            <PrivateRoute exact path="/admin/interests/:id">
              <ManageInterest />
            </PrivateRoute>
            <PrivateRoute exact path="/admin/interests">
              <InterestsIndex />
            </PrivateRoute>
            <PrivateRoute exact path="/admin/interests/store">
              <AddInterest />
            </PrivateRoute>
            <Route exact path={['/groupes', '/dons']} component={WorkingOn} />
            <Route exact path={["/inscription/verifier-email"]} component={EmailConfirmation} />
            <Route exact path={["/inscription/email-confirme"]} component={EmailConfirmed} />
            <Route exact path={["/", "/accueil"]} component={HomepageHomepage} />
            <Route component={NoMatch} />
          </Switch>
        </div>
      </Router>
    )
  }
}

export default App

import React,{Component}来自“React”
从“react Router dom”导入{BrowserRouter as Router,Route,Switch}
从“./components/Navigation/Navigation”导入导航
从“./pages/homepage/HomepageHomepage”导入主页主页
从“./pages/Dashboard”导入仪表板
从“./pages/NoMatch”导入NoMatch
从“./pages/Register/Register”导入寄存器
从“./pages/register/RegisterVolunteer”导入RegisterVolunteer
从“./pages/register/RegisterOrganism”导入RegisterOrganism
从“/pages/register/EmailConfirmation”导入EmailConfirmation;
从“/pages/register/EmailConfirmed”导入EmailConfirmed;
从“./pages/Login/Login”导入登录名
从“/pages/dashboard/DashboardHomepage”导入仪表板主页;
从“./pages/user/UserProfile”导入用户配置文件
从“/PrivateRoute”导入PrivateRoute
从“./pages/Logout”导入注销
从“./pages/organization/AddOrganization”导入AddOrganism
从“./pages/organization/OfferCreation”导入OfferCreation
从“./pages/organization/OfferPage”导入OfferPage
从“./pages/organization/organization/Organizamoffers”导入Organizamoffers
从“反应通知组件”导入反应通知
从“./pages/organization/OrganizationMoffer”导入OrganizationMoffer
导入“./src/css/app.scss”
从“./pages/search/ClassicSearch”导入ClassicSearch
从“./pages/organization/organization/OrganismSettings”导入{OrganismSettings}
从“./pages/WorkingOn”导入工作项
从“./pages/admin/interests/InterestsIndex”导入InterestsIndex;
从“/pages/admin/interests/AddInterest”导入AddInterest;
从“./pages/admin/interest/ManageInterest”导入ManageInterest
从“./pages/user/EditUser”导入EditUser
从“./pages/search/SmartSearch”导入SmartSearch
从“./pages/dashboard/AlternativeDashboardHomepage”导入AlternativeDashboardHomepage;
导出类应用程序扩展组件{
render(){
返回(
{/*  */}
import React, { Component } from 'react'
import * as Cookies from 'js-cookie'
import {BrowserRouter as Router, Route, Redirect} from 'react-router-dom'


export function PrivateRoute({ children, reverse = false, ...rest }) {
    if(reverse) {
    return (
        <Route
            {...rest}
            render={({ location }) =>
            (Cookies.get('token') == undefined) ? (
                children
            ) : (
                <Redirect
                to={{
                    pathname: "/tableaudebord",
                    state: { from: location }
                }}
                />
            )
            }
        />
        );
    }
    return (
      <Route
        {...rest}
        render={({ location }) =>
          (Cookies.get('token') != undefined) ? (
            children
          ) : (
            <Redirect
              to={{
                pathname: "/connexion",
                state: { from: location }
              }}
            />
          )
        }
      />
    );
  }

export default PrivateRoute