Javascript Redux saga正在获取数据,但没有更新状态

Javascript Redux saga正在获取数据,但没有更新状态,javascript,reactjs,redux,redux-saga,Javascript,Reactjs,Redux,Redux Saga,我在redux saga中使用axios来获取一些数据。我在每个步骤中都执行了console.log(),以查看每个步骤的结果。即使我能够成功地在控制台上打印所有获取的数据,唯一的问题是它没有更新状态,因为屏幕输出为空,并且在DevTools中我看到状态为空 我的行动: 我的减速机: 我的传奇: 最后,我的组件: 从“React”导入React; 从'react redux'导入{connect}; 从“../actions/index”导入{listSearchBrewery}; 康斯特啤酒厂

我在redux saga中使用axios来获取一些数据。我在每个步骤中都执行了
console.log()
,以查看每个步骤的结果。即使我能够成功地在控制台上打印所有获取的数据,唯一的问题是它没有更新状态,因为屏幕输出为空,并且在DevTools中我看到状态为空

我的行动:

我的减速机:

我的传奇:

最后,我的组件:

从“React”导入React;
从'react redux'导入{connect};
从“../actions/index”导入{listSearchBrewery};
康斯特啤酒厂=(道具)=>{
const{brewery,getBreweryList}=props;
返回(
酿酒厂
{brewery.map((项目)=>(
{item.city}中的{item.name}

))} ); } 常量mapStateToProps=状态=>{ 返回{ 酿酒厂:州立啤酒厂, //错误:state.error } } const mapDispatchToProps=调度=>({ getBreweryList:()=>dispatch(listSearchBrewery()), }); 导出默认连接(mapStateToProps、mapDispatchToProps)(ListBrewery);
在DevTools中,我可以看到
SET\u LIST\u BREWERY\u SUCCESS
action正在通过saga进行调度,并正在获取所有数据:

但状态是空的:


我不明白哪里出了错

类型的值是多少。listSetBrewerySuccess
?事情看起来不错。如果您将代码放入codesanbox,则很容易找出问题所在。@rayhatfield这是完整的数组响应。您的reducer正在查找具有
type:types.ListSetBrewerySucture的操作。“完整数组响应”是没有意义的。需要更改什么?这令人困惑。比如说,对于每一个ID,我都要获取姓名、城市、州。?
export const listSearchBrewery = ( ) => {     // gets workerSaga to fetch the data
    return {
        type: LIST_SEARCH_BREWERY_REQUEST,
    };
};

export const listSetBrewerySuccess = ( breweries ) =>{    // updates the store and also for display
    return {
        type: SET_LIST_BREWERY_SUCCESS,
        breweries
    };
};
const initialState = {
    breweries: [],
}

const ListBreweryReducer = ( state = initialState, action) => {
    switch(action.type) {
        case types.listSearchBrewery:
            return { ...state };
        case types.listSetBrewerySuccess:
            return { ...state, breweries: action.breweries };
        default:
            return state;
    }
}
export function* watcherSaga() {
    yield takeLatest("LIST_SEARCH_BREWERY_REQUEST", workerSaga);
}

function fetchBreweryList() {
    return axios({
        method: 'get',
        url: 'https://api.openbrewerydb.org/breweries'
    });
}

function* workerSaga() {
    try{
        console.log("Entered worker saga.");
        const response = yield call(fetchBreweryList);
        const breweries = response.data;
        console.log("worker-saga executed.");

        yield put({ type: "SET_LIST_BREWERY_SUCCESS", breweries });
        console.log("store set");
        console.log(breweries[0]);        // successfully printing on the console
    }
    catch (error) {
        yield put({ type: "SET_BREWERY_ERROR", error });
    }
}
import React from 'react';
import { connect } from 'react-redux';
import { listSearchBrewery } from '../actions/index';

const ListBrewery = ( props ) => {
    const { brewery, getBreweryList} = props;

    return (
        <div className="Container">
                <button className="button" onClick={getBreweryList}>Brewerries</button>
            <div className="list">
                {brewery.map((item) => (
                    <div key={item.id}>
                        <p>{item.name} in {item.city}</p>
                    </div>
                ))}
            </div>
        </div>
    );
}

const mapStateToProps = state => {
    return {
        brewery: state.breweries,
        //error: state.error
    }
}

const mapDispatchToProps = dispatch => ({
    getBreweryList: () => dispatch(listSearchBrewery()),
});

export default connect(mapStateToProps, mapDispatchToProps)(ListBrewery);