注:私はReact and Meteorの新機能を使用しています。React's Routerの使用方法v4 history.push()
私はmeteorを使ってテキストを作成しようとしていますが、私が使用しているチュートリアルではReact v3を使用しています.v4でbrowserHistory.push()を使用する方法を知りたいのですが、またはbrowserHistory.replace()を使用して、別のページにユーザーを送信します。これまでは、自分の名前を好きなように設定してチャットページにリンクするページを作っています。私は、オンラインで多数の記事やドキュメントがあることを知っていますが、それらはすべてかなり複雑な例です。可能であれば、他のページに誰かをリダイレクトできる最も基本的な方法を教えてください。
SetName.js:
import React from "react";
import { BrowserRouter } from 'react-router-dom'
export default class SetName extends React.Component{
validateName(e){
e.preventDefault();
let name = this.refs.name.value;
if(name){
console.log(name);
}
this.props.history.push('/asd')
}
render(){
return(
<div>
<form onSubmit={this.validateName.bind(this)}>
<h1>Enter a Name</h1>
<input ref="name" type="text"/>
<button>Go to Chat</button>
</form>
</div>
)
}
}
main.js
import React from "react";
import ReactDOM from "react-dom";
import {Meteor} from "meteor/meteor";
import {Tracker} from "meteor/tracker";
import { BrowserRouter, Route, Switch } from 'react-router-dom'
import {Texts} from "./../imports/api/Text";
import App from "./../imports/ui/App";
import Name from "./../imports/ui/Name";
import NotFound from "./../imports/ui/NotFound";
import SetName from "./../imports/ui/SetName";
Meteor.startup(() => {
Tracker.autorun(() => {
let texts = Texts.find().fetch();
const routes = (
<BrowserRouter>
<Switch>
<App path="/chat" texts={texts}/>
<SetName path="/setName" />
<Route component={NotFound}/>
</Switch>
</BrowserRouter>
);
ReactDOM.render(routes, document.getElementById("app"));
});
});
「Uncaught TypeError:未定義のpush 'プロパティを読み取ることができません」上記のmain.jsファイルを追加してチェックアウトできるように、エラーが発生しました。 –
validateName(e){}をvalidateName =(e)=> {}に変更して、クラスのレベルthisキーワードにアクセスできるようにします。そうしないと、関数内でのみ扱われます。 –