gpt4 book ai didi

javascript - 如何将部分 Redux 存储转换为数组

转载 作者:行者123 更新时间:2023-11-29 14:39:59 24 4
gpt4 key购买 nike

好吧,这是我的泡菜,我在 actions/index.js 中的一个 Action 是:

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 控制台中的小三 Angular 形),我得到的每只小狗都是这样的:

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} /> 的最佳方法是什么?使用状态、变量、分派(dispatch)操作,还是我从未听说过的东西?

任何帮助将不胜感激!!仅供引用,这是我在 Stack Overflow 中的第一个问题,感觉很怀旧。我是一名全职警官,正在尝试学习编程。再次感谢!

更新:

感谢 Piotr Berebecki 的建议,我将其绑定(bind)为:

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]

像这样:

enter image description here

最佳答案

欢迎来到 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"}
]
*/

关于javascript - 如何将部分 Redux 存储转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39738928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com