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