React/Redux-从mapStateToProps发出迭代json
我有一个React本机应用程序,我正在尝试应用Redux。这是我第一次尝试使用Redux,所以我想我没有在房间里看到大象 问题是我无法访问我的道具数据(使用mapStateToProps生成)。这是我的密码: reducer.js(在控制台日志中,我可以很好地看到json对象) component.js(在console.log中,我看到了我的数据,但现在它似乎都在一个对象中,这可能是我没有看到的) reducers/index.jsReact/Redux-从mapStateToProps发出迭代json,json,ajax,redux,Json,Ajax,Redux,我有一个React本机应用程序,我正在尝试应用Redux。这是我第一次尝试使用Redux,所以我想我没有在房间里看到大象 问题是我无法访问我的道具数据(使用mapStateToProps生成)。这是我的密码: reducer.js(在控制台日志中,我可以很好地看到json对象) component.js(在console.log中,我看到了我的数据,但现在它似乎都在一个对象中,这可能是我没有看到的) reducers/index.js import { combineReducers } fro
import { combineReducers } from 'redux';
import DataReducer from './DataReducer';
export default combineReducers({
etiquetas: DataReducer
});
因此,我的问题是:
提前谢谢你 这里的问题就是你构造减速器的方式
const INITIAL_STATE = {
etiquetas: []
};
上面的代码表示您正在创建一个对象,其属性名为“etiquetas”,最初包含一个空数组
在根reducer文件中,导入该对象,并将其命名为“etiquetas”。因此,减速机真正返回的是:
etiquetas: {
etiquetas: [your array of data]
}
这可以解释为什么你抱怨收到了一个物体。有两种方法可以纠正这种情况
One:将mapStateToProps函数更改为:
const mapStateToProps = (state) => {
return {
etiquetas: state.etiquetas.etiquetas
};
};
两个:将减速器换成这样
export default (state = [], action) => {
switch (action.type) {
case FETCH_ETIQUETAS_SUCCESS:
//console.log("payload: "+action.payload);
return action.payload;
default:
return state;
}
};
这将确保reducer只返回一个数组,而不是在属性中包含数组的对象。由您决定您更喜欢哪一个。您确定action.payload是array而不是json吗?不确定为什么不发布您试图调试的代码的实际重要部分。我们可以看到您的action/action creator对某些数据执行类似于AJAX的请求吗?另外,您可以向我们展示您的root reducer文件的外观吗like@DanielZuzevich刚刚添加了操作文件和reducer根目录,在MapStateTrops函数中,将其更新为,etiquetas:state.etiquetas.etiquetas和re fresh,如果有任何变化,请告诉我。非常感谢!我选择了1号,工作得很好:)
etiquetas: {
etiquetas: [your array of data]
}
const mapStateToProps = (state) => {
return {
etiquetas: state.etiquetas.etiquetas
};
};
export default (state = [], action) => {
switch (action.type) {
case FETCH_ETIQUETAS_SUCCESS:
//console.log("payload: "+action.payload);
return action.payload;
default:
return state;
}
};