React-Redux:非同期アクションと同期アクションをディスパッチする方法は?

AlexAR

React / Reduxを使用してサーバーのファイルを管理するためのWebインターフェイスのコーディングを開始しました。
これで、APIにファイルリストをJSONとして取得するように要求するページができました。

それはうまく機能し、サーバーからすべてのファイルのリストを含むページを取得しました。ただし、ファイルの選択アクションは次のエラーで失敗します。

TypeError:_this2.props.selectFileは関数ではありません

これが私のコードです:

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import {createStore, applyMiddleware, combineReducers} from 'redux';
import {Provider, connect} from 'react-redux';
import thunk from 'redux-thunk';
import activeFileReducer from './reducers/reducer-active-file';
import dataListReducer from './reducers/reducer-data';

const reducer = combineReducers({
    datalist: dataListReducer, 
    activefile: activeFileReducer
})
const createStoreWithMiddleware = applyMiddleware(thunk)(createStore)
let store = createStoreWithMiddleware(reducer);
ReactDOM.render(<Provider store={store}>
    <App />
    </Provider>, document.getElementById('table'));

datalist-reducer

export default function datalist (state = [], action) {
    switch (action.type) {
        case "FETCH_REQUEST":
            return state;
        case "FETCH_SUCCESS": 
            return action.payload || [];
        default:
            return state;
    }
}

アクティブファイルリデューサー

export default function activefile (state= {}, action){
        switch(action.type){
            case "FILE_SELECTED":
                return action.payload;
            default:
                return state;
        }

    }

アクション/index.js

export const selectFile = (file) => {
    return {
        type: "FILE_SELECTED",
        payload: file
    }
}


export const fetchDataRequest = () =>{
    return {
      type: "FETCH_REQUEST"
    }
}

export const fetchDataSuccess = (payload) => {
    return {
        type: "FETCH_SUCCESS",
        payload
    }
}

export const fetchDataError = () => {
    return {
        type: "FETCH_ERROR"
    }
}

data-list-container

import React, {Component} from 'react';
import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import {fetchDataRequest, fetchDataSuccess, fetchDataError, selectFile} from '../actions/index';

class DataList extends Component{
    componentDidMount(){
        this.props.fetchDataWithRedux()

    }

    render(){
        return(
            <ul>
                {
                    this.props.datalist && 
                    this.props.datalist.map((item, key) =>{
                        return(
                            <li key={key} onClick={() => this.props.selectFile(item)}>{item.title}</li>
                        )
                    })
                }
            </ul>
        )       
    }
}


function fetchDataWithRedux() {
    return (dispatch) => {
        dispatch(fetchDataRequest());
        return fetchData().then(([response, json]) =>{
            console.log(response);
            if(response.status === 200){
            dispatch(fetchDataSuccess(json))
            dispatch(selectFile())
    }
    else{
        dispatch(fetchDataError())
        dispatch(selectFile())
    }
    })
}
}

function fetchData() {
const URL = "http://localhost:5000/api/deposit/view";
return fetch(URL, { method: 'GET'})
    .then( response => Promise.all([response, response.json()]));
}

function mapStateToProps(state){
    return {
        datalist: state.datalist
    }
}

export default connect(mapStateToProps, {fetchDataWithRedux})(DataList);
マヤンクシュクラ

selectFile小道具のコンポーネントに関数を渡していないので、ここで:

export default connect(mapStateToProps, {fetchDataWithRedux})(DataList);

パスselectFileあなたが渡しているのと同じ方法でfetchDataWithRedux、これを使用します。

export default connect(mapStateToProps, {fetchDataWithRedux, selectFile})(DataList);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

React Router + Redux-ルート変更時に非同期アクションをディスパッチしますか?

分類Dev

React redux 非同期アクション

分類Dev

React Native + Redux - onPress はアクションと別の関数をディスパッチします

分類Dev

componentDidMount(react / redux)でアクションをディスパッチします

分類Dev

React&Reduxアプリケーションのイベントハンドラーでアクションをディスパッチする方法

分類Dev

React / ReduxでアクションをディスパッチするときにDefaultを防ぐ良い方法はありますか?

分類Dev

Reactでaxiosを使用して非同期アクションをjestテストする方法は?

分類Dev

Reactのナビゲーションバーからアクションをディスパッチする方法

分類Dev

React / Redux-アクションをディスパッチしない

分類Dev

Reduxを使用したReactでのアクションのディスパッチに関する問題

分類Dev

Reduxを使用したReactでのアクションのディスパッチに関する問題

分類Dev

react-reduxで2つの同期アクションをディスパッチしている間、最初のアクションで状態が更新されない

分類Dev

アクションがディスパッチされた後にUIを更新する正しい方法は何ですか。React Redux

分類Dev

複数のアクションクリエーターをディスパッチする方法(React + Redux +サーバー側レンダリング)

分類Dev

API呼び出しでのonSubmitと非同期アクションに関するreact-reduxの問題

分類Dev

別のアクションが正しくディスパッチされた場合にアクションをディスパッチするにはどうすればよいですか?redux thunk(react)を使用する

分類Dev

React-Router&Reduxを使用しているときにリンクをクリックしたときにアクションをディスパッチする方法は?

分類Dev

React NativeAdvice-Reduxアクションの起動OnPressディスパッチアクション

分類Dev

React-Redux-子コンポーネントからアクションをディスパッチするにはどうすればよいですか?

分類Dev

アクションを小道具としてディスパッチできません(React&Redux)

分類Dev

React - 非同期アクションの直後に状態を設定する

分類Dev

React / Redux / Jestでディスパッチアクション関数をテストしようとすると未定義になります

分類Dev

React and Redux:1つの関数内のすべてのアクションをディスパッチします

分類Dev

react-reduxでbindactioncreatorを使用してアクションをディスパッチします

分類Dev

React-Reduxアクションディスパッチの問題

分類Dev

React-Redux:他のアクション内にディスパッチされたアクションをテストします

分類Dev

フェッチアクションでストアからのデータを使用する方法 (react-redux)

分類Dev

エラー:アクションはプレーンオブジェクトである必要があります。非同期アクションにはカスタムミドルウェアを使用します。React-reduxエラー

分類Dev

react-reduxエラー:アクションはプレーンオブジェクトである必要があります。非同期アクションにカスタムミドルウェアを使用する

Related 関連記事

  1. 1

    React Router + Redux-ルート変更時に非同期アクションをディスパッチしますか?

  2. 2

    React redux 非同期アクション

  3. 3

    React Native + Redux - onPress はアクションと別の関数をディスパッチします

  4. 4

    componentDidMount(react / redux)でアクションをディスパッチします

  5. 5

    React&Reduxアプリケーションのイベントハンドラーでアクションをディスパッチする方法

  6. 6

    React / ReduxでアクションをディスパッチするときにDefaultを防ぐ良い方法はありますか?

  7. 7

    Reactでaxiosを使用して非同期アクションをjestテストする方法は?

  8. 8

    Reactのナビゲーションバーからアクションをディスパッチする方法

  9. 9

    React / Redux-アクションをディスパッチしない

  10. 10

    Reduxを使用したReactでのアクションのディスパッチに関する問題

  11. 11

    Reduxを使用したReactでのアクションのディスパッチに関する問題

  12. 12

    react-reduxで2つの同期アクションをディスパッチしている間、最初のアクションで状態が更新されない

  13. 13

    アクションがディスパッチされた後にUIを更新する正しい方法は何ですか。React Redux

  14. 14

    複数のアクションクリエーターをディスパッチする方法(React + Redux +サーバー側レンダリング)

  15. 15

    API呼び出しでのonSubmitと非同期アクションに関するreact-reduxの問題

  16. 16

    別のアクションが正しくディスパッチされた場合にアクションをディスパッチするにはどうすればよいですか?redux thunk(react)を使用する

  17. 17

    React-Router&Reduxを使用しているときにリンクをクリックしたときにアクションをディスパッチする方法は?

  18. 18

    React NativeAdvice-Reduxアクションの起動OnPressディスパッチアクション

  19. 19

    React-Redux-子コンポーネントからアクションをディスパッチするにはどうすればよいですか?

  20. 20

    アクションを小道具としてディスパッチできません(React&Redux)

  21. 21

    React - 非同期アクションの直後に状態を設定する

  22. 22

    React / Redux / Jestでディスパッチアクション関数をテストしようとすると未定義になります

  23. 23

    React and Redux:1つの関数内のすべてのアクションをディスパッチします

  24. 24

    react-reduxでbindactioncreatorを使用してアクションをディスパッチします

  25. 25

    React-Reduxアクションディスパッチの問題

  26. 26

    React-Redux:他のアクション内にディスパッチされたアクションをテストします

  27. 27

    フェッチアクションでストアからのデータを使用する方法 (react-redux)

  28. 28

    エラー:アクションはプレーンオブジェクトである必要があります。非同期アクションにはカスタムミドルウェアを使用します。React-reduxエラー

  29. 29

    react-reduxエラー:アクションはプレーンオブジェクトである必要があります。非同期アクションにカスタムミドルウェアを使用する

ホットタグ

アーカイブ