質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1761閲覧

this.props.history.pushの使い方について

y.ko

総合スコア15

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2019/03/13 04:02

前提・実現したいこと

ReactとFireBaseを利用して、ログイン認証を行いたいと思っています。
ログインの認証の実装ができたので、ページ遷移の方法をさがして実装してみようと思いましたが、this.props.history.push('遷移先')
の部分のhistoryがpropsに存在しない旨のエラーが帰ってきます。
現状はただログインの認証を行って、ログイン情報が取得出来ればページの遷移を行うという簡単なものを作りたいのですが、
どのサイトを探してもhistoryが存在しないときの対処方法が出てきません。
また、この問題に付随しているのかいないのかは定かではありませんが、最終行のWithRouterでもエラーが起きてしまっています。
※実装練習中のため、ボタンを押すとaboutページに遷移するだけの簡単なものでやっております。

発生している問題・エラーメッセージ

・this.props.history.push('遷移先')部分のエラーメッセージ プロパティ 'history' は型 'Readonly<{ children?: ReactNode; }> & Readonly<{}>' に存在しません。ts(2339) ・WithRouter()部分のエラーメッセージ 型 'typeof Detail' の引数を型 'ComponentType<RouteComponentProps<any, StaticContext, any>>' のパラメーターに割り当てることはできません。 型 'typeof Detail' を型 'ComponentClass<RouteComponentProps<any, StaticContext, any>, any>' に割り当てることはできません。 型 'Detail' を型 'Component<RouteComponentProps<any, StaticContext, any>, any, any>' に割り当てることはできません。 プロパティ 'props' の型に互換性がありません。 型 'Readonly<{ children?: ReactNode; }> & Readonly<{}>' を型 'Readonly<{ children?: ReactNode; }> & Readonly<RouteComponentProps<any, StaticContext, any>>' に割り当てることはできません。 Type 'Readonly<{ children?: ReactNode; }> & Readonly<{}>' is missing the following properties from type 'Readonly<RouteComponentProps<any, StaticContext, any>>': history, location, matchts(2345)

該当のソースコード

import * as React from 'react';
import { withRouter } from 'react-router';

class Detail extends React.Component {
handleToAboutPage = () => {
this.props.history.push('/about')
}

render() {
return (
<div>
<button onClick={this.handleToAboutPage}>
aboutページへ
</button>
</div>
)
}
}

export default withRouter(Detail);

React,TypeScript,JavaScript

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2019/03/15 05:17

アロー関数ではthisが束縛されないのではないでしょうか。
alpaka

2019/03/17 01:07

上位のコンポーネントでRouterタグを使用していますか?
guest

回答1

0

ベストアンサー

通常はhistoryが存在すると思いますが、そうでないなら、もらっているコードだけだと判断できないですね。

このへんの情報など参考にならないでしょうか?
https://qiita.com/sand/items/4aec0201befbe1483dc5

投稿2019/04/25 01:22

odyu

総合スコア548

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問