Проблема при передаче реквизита с использованием history.pu sh () в реакции-маршрутизаторе - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь передать реквизит другому компоненту в React, используя history.pu sh (). Мой код выглядит так:

 history.push({pathname:`/tickets/solveticket`,
                state:{ticket:this.props.ticketInfo, user:this.props.currentUser}}); 


 window.location.reload()

история экспортируется так:

 import { createBrowserHistory } from 'history';

export const history = createBrowserHistory();

и моя конфигурация маршрута:

 import {BrowserRouter as Router,Route,Switch,Link } from "react-router-dom"; 
    <Router history={history}> 
    ... <PrivateRoute exact path="/" component={Dashboard} />
                    <Route exact path="/login" component={Login} />
                    <Route exact path="/register" component={Register} />


                    <PrivateRoute exact path="/dashboard" component={Dashboard} />  

`

и компонент, который отображает URL-адрес / tickets / solveticket, принимает параметры истории, например:

constructor(props){
    super(props)
    this.state={
       ticketToSolve:this.props.location.state.ticket,
       currentUser:this.props.location.state.user
    }
}

, и все же я получаю эту ошибку:

TypeError: Cannot read property ' ticket 'of undefined

Я пытался обернуть все в withRouter, и он все еще не работает. Я также попытался использовать this.props.history.pu sh вместо экспортированной истории, но в этом случае моя история не распознается. Я целый день гуглял и искал идеи, что можно попробовать, так что если кто-нибудь есть идеи, пожалуйста, просто запишите это .. спасибо заранее:)

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Вам нужно передать значения через 'history.pu sh', например:

history.push(`/tickets/solveticket`, {
  ticket:this.props.ticketInfo, 
  user:this.props.currentUser
});

Надеюсь, это работает для вас.

0 голосов
/ 24 января 2020

try

constructor(props){
    super(props)
    this.state={
       ticketToSolve:"",
       currentUser:""
    }
}
componentDidMount(){
 if(this.props.location.state){
  this.setState({
       ticketToSolve:this.props.location.state.ticket,
       currentUser:this.props.location.state.user
    })
  }
}

Потому что некоторое время вы не можете быть уверены, что переменные уже установлены. Может быть, отреагируй, сделай этот код первым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...