好的,这是我正在吃的泡菜,我的动作之一actions/index.js
是:
export function requestPeople() {
return (dispatch, getState) => {
dispatch({
type: REQUEST_PEOPLE,
})
const persistedState = loadState() // just loading from localStorage for now
console.log(persistedState)
//Object.keys(persistedState).forEach(function(i) {
//var attribute = i.getAttribute('id')
//console.log('test', i,': ', persistedState[i])
//myArr.push(persistedState[i])
//})
//console.log(myArr)
//dispatch(receivePeople(persistedState)) // I'm stuck here
}
}
当我console.log(persistedState)
从上方进入Chrome控制台时,我的people
状态完全是这样。
Object {people: Object}
然后,当我深入到people: Object
上面时,我像这样得到它们:
abc123: Object
abc124: Object
abc125: Object
当我深入研究其中的每只幼犬时(通过单击Chrome控制台中的小三角形),我会像这样:
abc123: Object
firstName: 'Gus'
id: 'abc123'
lastName: 'McCrae'
// when I drill down into the second one I get
abc124: Object
firstName: 'Woodrow'
id: 'abc124'
lastName: 'Call'
现在,这就是我遇到的问题。
我正在使用的表是Allen Fang的react-bootstrap-table,该表仅接受数组的表,并且这样调用它,<BootstrapTable data={people} />
因此我的上述数据需要转换为以下数组:
const people = [{
id: abc123,
firstName: 'Gus',
lastName: 'McCrae'
}, {
id: abc124,
firstName: 'Woodrow',
lastName: 'Call'
}, {
...
}]
// and eventually I'll call <BootstrapTable data={people} />
我的问题特别是如何将people
上面显示的状态转换为这个必要的数组?在我的action/index.js
档案中,我尝试过:Object.keys(everything!!!)
最后,一旦有了数组,将数组传递给<BootstrapTable data={here} />
使用状态,变量,分派的动作(我从未听说过)的最佳方法是什么?
任何帮助将不胜感激!仅供参考,这是我在Stack Overflow中的第一个问题,让人怀旧。我是一名专职警务人员,正在尝试一边学习编码。再次感谢!
更新:
多亏了Piotr Berebecki的建议,我将这种方式绑起来:
export function requestPeople() {
return (dispatch, getState) => {
dispatch({
type: REQUEST_PEOPLE,
})
const persistedState = loadState()
console.log('persistedState:', persistedState)
const peopleArr = Object.keys(persistedState.people).map(function(key) {
return persistedState[key]
})
console.log(JSON.stringify(peopleArr))
//dispatch(receivePeople(persistedState))
}
}
并得到[null,null,null]
像这样:
欢迎使用Stack Overflow :)
要将嵌套persistedState.people
对象转换为数组,您可以先使用键建立一个临时键数组,Object.keys(persistedState.people)
然后map()
在这些键上方将每个键替换为原始嵌套对象中找到的对象persistedState.people
-在该键处。您可以将结果数组分配给变量,然后将其传递给BootstrapTable
。在下面查看下面的代码和演示:http : //codepen.io/PiotrBerebecki/pen/yaXrVJ
const persistedState = {
people: {
'abc123' : {
id:'abc123',firstName: 'Gus', lastName: 'McCrae'
},
'abc124' : {
id:'abc124',firstName: 'Woodrow', lastName: 'Call'
},
'abc125' : {
id:'abc125',firstName: 'Jake', lastName: 'Spoon'
}
}
}
const peopleArr = Object.keys(persistedState.people).map(function(key) {
return persistedState.people[key];
});
console.log(JSON.stringify(peopleArr));
/*
Logs the following array:
[
{"id":"abc123","firstName":"Gus","lastName":"McCrae"},
{"id":"abc124","firstName":"Woodrow","lastName":"Call"},
{"id":"abc125","firstName":"Jake","lastName":"Spoon"}
]
*/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句