我从数据库中获取对象列表,并且好奇我应该如何映射它们以使用Redux更新state
。
我主要遵循egghead教程,但这涉及一次用一个对象更新状态。
假设我从空列表[]
开始,并且我对服务器进行fetch()
调用,该服务器返回对象列表[Object1, Object2, Object3]
。
我努力理解数据流,理论上我应该怎么做。
我意识到下面的代码不起作用,但我试图建议我如何努力完成这项工作,希望有人可以帮我完成它。
如何编写将映射fetchServerData()
结果的reducer并调用todo
并将所有内容添加到状态对象中?
const candidate = (state, action) => {
switch (action.type) {
case 'ADD_CANDIDATE':
return {
id: action.id,
first: action.first,
last: action.last,
title: action.title,
company: action.company,
sent_inmail_date: action.sent_inmail_date,
response: action.response
}
default:
return state
}
}
const mapOverObject = (listObject, action) => {
??
}
const store = createStore(mapOverObject)
const fetchServerData = () => {
const URL = 'http://localhost:5000/get_db'
return fetch(URL)
.then((response) => response.json())
.then((responseJson) => {
return responseJson
});
}
const TodoApp = (props) => {
return (
<div>
<button onClick = {() => fetchServerData() }> Get Server Data </button>
</div>
)
}
ReactDOM.render(
<Provider store={store} >
<TodoApp />
</Provider>,
document.getElementById('root')
)
答案 0 :(得分:0)
您不需要阵列上的地图。
获得responseJson
后,您将使用数据调度操作(您可以直接发送整个数组)。然后你的reducer可以用它直接更新商店。
您需要映射数组,例如,您想要删除对象内的某些字段。但是你可以在你的减速机上做到这一点。