Jestem nowy, aby reagować / reagować i programować ogólnie. Poniżej znajduje się mój kod między 3 plikami. Przechodzę sklep z dostawcą, który zawija mój reakcja routera. Problem polega na 1), wiem, że biegnie i działania są importowane prawidłowo, ponieważ testowanie () nie działa. Ale debuger w Fetchalltweets w ramach działań nigdy nie jest trafiony. Czy ktokolwiek z was weteranów, powiedz mi, co może być mój problem?

1) odpowiedni kod kontenera:

import {connect} from 'react-redux';
    import Feed from './feed';
    import {fetchAllTweets, testing} from '../../actions/tweet_actions';
    import thunk from 'redux-thunk';

    const mapDispatchToProps = (dispatch) => ({
        getTweets: () => {
            testing();
            return dispatch(fetchAllTweets);
        }
    });

    const FeedContainer = connect(mapStateToProps, mapDispatchToProps)(Feed);

    export default FeedContainer;

2) Właściwy kod działania

import * as APIUtil from '../util/tweet_api_util';
import Constants from '../constants/constants';
import thunk from 'redux-thunk';

export const fetchAllTweets = () => dispatch => {
    debugger;
    console.log('fetch all tweets action');
    APIUtil.fetchAllTweets()
        .then(tweets => dispatch(receiveTweets(tweets))), 
        err => dispatch(receiveErrors(err.responseJSON))
};

export const testing = () => {
    debugger;
    console.log("worked");
}

3) Kod sklepu

import { createStore, applyMiddleware } from 'redux';
import RootReducer from '../reducers/root_reducer';
import thunk from 'redux-thunk';

const configureStore = (preloadedState = {}) => (
  createStore(
    RootReducer,
    preloadedState,
    applyMiddleware(thunk)
  )
)

export default configureStore;
0
stckoverflowaccnt12 16 luty 2017, 08:14

2 odpowiedzi

Najlepsza odpowiedź

Powinieneś przekazać wartość zwróconą przez fetchAllTweets Creator akcji jako argument dispatch, a nie sama funkcja twórcza akcji.

Użyj tego:

return dispatch(fetchAllTweets());

Zamiast tego:

return dispatch(fetchAllTweets);
2
Bartek Fryzowicz 16 luty 2017, 09:26

Możesz spróbować Bind badaniaCreatory i użyj go do kontenera, co następujące:

import {connect} from 'react-redux';
import { bindActionCreators } from 'redux';
import Feed from './feed';
import { tweetActions } from '../../actions/tweet_actions';
import thunk from 'redux-thunk';

const mapDispatchToProps = (dispatch) => ({
    actions: bindActionCreators(tweetActions, dispatch);
});

const FeedContainer = connect(mapStateToProps, mapDispatchToProps)(Feed);

export default FeedContainer;

Następnie w komponencie, zadzwoń do nich jako this.props.actions.fetchAllTweets() i this.props.actions.test()

1
Kelvin De Moya 16 luty 2017, 05:32