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

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

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

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

React.js

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

Q&A

解決済

1回答

1340閲覧

react、reduxの連携について

seiyan0426

総合スコア16

Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

React.js

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

0グッド

0クリップ

投稿2018/06/05 13:29

前提・実現したいこと

react、redux、react-reduxを使ってデータ抽出アプリを作っています。
コンポーネントの検索ボタン押下時、actionにて定義した関数を実行させたいです。
まずは、コンポーネントとコンテナが繋がっているかを確認したところpropsが空っぽでした。
問題点を教えていただけないでしょうか。

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

コンポーネントとコンテナは、connectにて繋いでいるのですが、以下エラーが発生します。

TypeError: _this.props.onBtnSearchClick is not a function DataExtract._this.onBtnSearchClick src/components/DataExtract.js:52 // 検索ボタン押下イベントハンドラー onBtnSearchClick = (event) => { console.log(this.props); // データ抽出実行 this.props.onBtnSearchClick(); // データ表示エリア表示

該当のソースコード

■components/DataExtract.js:抜粋 import React, { Component } from 'react'; import { RaisedButton } from 'material-ui'; class DataExtract extends Component { constructor(props) { super(props); this.state = { }; } componentDidMount() { } // 検索ボタン押下イベントハンドラー onBtnSearchClick = (event) => { console.log(this.props); // データ抽出実行 this.props.onBtnSearchClick(); }; render() { return ( // 検索エリア <div> <div style={{ display: "inline-block", verticalAlign: "top", marginTop: "5px" }}> <RaisedButton label="検索" backgroundColor="#2962FF" style={{ width: "85px" }} labelStyle={{ color: "#fff", fontWeight: "bold", fontSize: "14px" }} icon={<CachedIcon color={"#fff"} style={{ marginLeft: "0px" }} />} labelPosition="after" onClick={this.onBtnSearchClick.bind(this)} /> </div> </div> ); } } export default DataExtract; ■container/containerDataExtract.js import { connect } from 'react-redux'; import DataExtract from '../components/DataExtract'; import { getTrnSales } from '../actions/actionDataExtract'; const mapStateToProps = (state) => { const length = state.reducerDataExtract.length; const currentState = state.reducerDataExtract[length -1]; console.log(currentState); return { items: currentState.items } }; const mapDispatchToProps = (dispatch) => { return { onBtnSearchClick() { dispatch(getTrnSales()); } }; }; const containerDataExtract = connect( mapStateToProps, mapDispatchToProps )(DataExtract); export default containerDataExtract;

試したこと

DataExtract.jsにて検索ボタンonClick={this.onBtnSearchClick.bind(this)}を押下したところpropsが空でした。

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

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

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

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

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

jun68ykt

2018/06/05 21:15

reduxの構成要素(アクション、アクションクリエーター、リデューサ)、および createStore しているところのソース(index.jsですかね?)も載せたほうがよいかもしれません。
guest

回答1

0

自己解決

読み込むコンポーネントを見直したところ誤りがありました。
自己解決しました、申し訳ありません。

投稿2018/06/07 15:21

seiyan0426

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問