2017-09-23 1 views
0

私は "react-router"を使用しています: "^ 4.2.0"、 "react-router-dom": "^ 4.2.2" 私がしようとしているのは、フォームを別のページ(コンポーネント)に送る必要があるということです。ここに私のコードはリアクタルータ "context.router.transitionToは関数ではありません"

FormValue.js

import React from "react"; 

class FormValues extends React.Component{ 
    gotoStore(e){ 
    e.preventDefault(); 
    let id = this.storeInput.value; 
    this.context.router.transitionTo(`${id}`); 
} 

render(){ 
    return (
      <form onSubmit={(e) => this.gotoStore(e)}> 
       <input type="text" placeholder="enter your name" 
       ref={(input) => {this.storeInput = input}}/> 
       <button type="submit">Submit</button> 
      </form> 
    ) 
} 
} 

FormValues.contextTypes = { 
router: React.PropTypes.object 
} 

export default FormValues; 

index.js

import React from "react"; 
    import { render } from 'react-dom'; 
    import {BrowserRouter, Route} from "react-router-dom"; 
    import ReactDom from "react-dom"; 
    import App from './App'; 
    import FormValues from './FormValues'; 

    const Root =() => { 
    return (
    <BrowserRouter> 
     <div> 
      <Route path="/" exact component={FormValues}/> 
      <Route path="/:id" exact component={App}/> 

     </div> 
    </BrowserRouter> 
    ) 
    } 

    ReactDom.render(<Root/>, document.getElementById('root')); 

と任意のヘルプは

をいただければ幸いです enter image description here

として、私はエラーを取得していますです

+0

は、プログラム的にナビゲートするため、この答えを参照コンテキストを使用することはお勧めしません、反応して、https://stackoverflow.com/questions/44127739/programatically-navigate-using-react- router/44128108#44128108 –

+0

私はWes Bosの "React for beginners"コースをここで認識しています。今日私は同じ問題に遭遇しました。あなたはどうやってあなたの問題を解決しましたか? – Marecky

+0

このスレッドには、プログラムによるナビゲーションに関する多くの有益な情報が含まれています。https://stackoverflow.com/questions/42123261/programmatically-navigate-using-react-router-v4 –

答えて

1

私のソリューションは、次のとおりです。

import { PropTypes } from 'prop-types'; 

goToStore(e) { 
e.preventDefault(); 
const storeId = this.storeInput.value; 
this.props.history.push(`store/${storeId}`); 
} 

StorePicker.contextTypes = { 
    router: PropTypes.object 
} 
0

我々はすでにpropshistoryにアクセスすることができますので、私たちも、もうPropTypesをインポートする必要はありません。通知した場合、this.props.historyに電話するときは、後でPropTypesと宣言するルータコンテキストには触れません。作品であると単純に以下のコードを持つ:

goToStore(e) { 
e.preventDefault(); 
const storeId = this.storeInput.value; 
this.props.history.push(`store/${storeId}`); 
} 
関連する問題