2017-07-22 76 views
1

我有一種情況,點擊div元素時,瀏覽器應導航到不同的頁面。在此事件的onClick中,我更改狀態變量的值,並在鏈接標記中將值傳遞給下一個組件。鏈接到不反應工作

的代碼是像這個 -

import React from 'react'; 
import ReactDom from 'react-dom' ; 
import $ from 'jquery' ; 
import {Switch, BrowserRouter as Router,Route,Link} from 'react-router-dom' 
import {FullBlog} from './FullBlog.js' 


class Author extends React.Component{ 
    constructor(props){ 
    super(props); 
    this.state={ 
     data:this.props.data, 
    } 
    this.loadBlog=this.loadBlog.bind(this); 
    } 

    loadBlog(i){ 
    var data=this.state.data[i]; 
    this.setState({ 
    data:data, 
    }) 

    } 

    render(){ 
    let content=(<p></p>); 
    //console.log(this.state.data); 
    var data=this.state.data; 

    content=( 
     <div> 
     <Link to={'/fullblog/${data}'} /><div onClick={this.loadBlog.bind(this,this.props.i)} className="box"> 
     <div>{this.props.i}</div> 
      <div>{this.props.data.Author}</div> 
      <div>{this.props.data.Book}</div> 
     </div> 
     </div> 

    ) 


     return content; 
    } 
} 

出於同樣的父類是這樣

import React from 'react' 
import ReactDOM from 'react-dom' 
import {ExpenseApp} from './expense-app.js' 
import {Switch, BrowserRouter as Router,Route,hashHistory} from 'react-router-dom' 
import {FullBlog} from './FullBlog.js' 
class App extends React.Component{ 

    render(){ 
     return(
      <Router> 
     <div> 
       <Route path='/' render={()=><ExpenseApp data={data}/>}/> 
      <Route path='/fullblog' component={FullBlog}/> 
     </div> 
      </Router> 
      ) 
    } 
} 
ReactDOM.render(<App/>, document.getElementById('container')) 

在此之後,我得到錯誤的 errror

回答

0

hashHistory不可從react-router-dom package v4起,並已移至history npm包。但是,您可以使用HashRouter而不是BrowserRouter

此外,如果您要傳遞動態值的鏈接組件,請使用template literals而不是使用單引號內的值。

<Link to={`/fullblog/${this.props.data}`} /> 

通過使用模板文字,如果{this.props.data}有那麼鏈接路徑將被評估爲/fullblog/foofoo,但是如果你使用單引號的路徑將保持/fullblog/${this.props.data}

+0

如果我必須使用browserhistory作爲我正在嘗試實現一個動態的Web應用程序,那麼我該如何傳遞歷史記錄? – Aayushi

+0

和你是什麼意思的模板文字 – Aayushi

+0

爲什麼你想傳遞歷史,如果是實現動態路由,你可以看到這個例子https://stackoverflow.com/questions/44127739/programatically-routing-based-on- a-condition-with-react-router/44128108#44128108請參閱此模板文字https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals –