2017-02-06 8 views
0

オブジェクトurl(パラメータとして)渡し、他のコンポーネントから取得する必要があります。
だから、私は文字列化私のオブジェクトにthouhtなどのように、パラメータとして渡す:Reactどのようにオブジェクトを捜索してURLに渡すか

<li key={something}><Link to={{pathname:`/animal/${JSON.stringify(item)}`}}>{item.name}></Link></li> 

しかし、URL、今のブラウザ上で、それを表示するようになります:http://....../animal/[object]、私はそれを変換傾けることJSON.parse()を使用してjsonオブジェクトに戻ります。

新しいコンポーネントでは、{this.props.params.obj}が届いています。これは経路上に宣言していますが、<Route path='/animabl/:obj' component={Animal}></Route>ですが、jsonオブジェクトに変換することはできません。

+0

私には良いことのように見えるしていません。通常、IDを渡すと、サーバーはデータベースにオブジェクト全体を取得するよう要求します –

答えて

0

私は、<Link>要素のクエリオブジェクト上で私のオブジェクトを渡すことで、この問題を解決したので、同じよう:

<Link to={{pathname:`/animal/${++index}`,query:{'obj':JSON.stringify(item)}}}>{item.name}></Link> 

これはスニペットです:

var data = this.state.animal.results.map((item,index)=> { 
      return <li key={index.toString()}> 
       <Link to={{pathname:`/animal/${++index}`,query:{'obj':JSON.stringify(item)}}}>{item.name}></Link> 
      </li>}); 

そして、新しいコンポーネントでは、objのパラメータを取得し、JSONに再度変換します。

this.props.location.query.obj 

そしてcomponentDidMount内側:

componentDidMount:function(){ 
     /*GET THE OBJECT FROM THE URL PARAM*/ 
     const tmp = JSON.parse(this.props.location.query.obj); 
     //i manipulate the JSON object.... 
} 
関連する問題