Redux:使用列表更新状态

时间:2017-07-04 14:28:27

标签: reactjs redux

我从数据库中获取对象列表,并且好奇我应该如何映射它们以使用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')
)

1 个答案:

答案 0 :(得分:0)

您不需要阵列上的地图。 获得responseJson后,您将使用数据调度操作(您可以直接发送整个数组)。然后你的reducer可以用它直接更新商店。

您需要映射数组,例如,您想要删除对象内的某些字段。但是你可以在你的减速机上做到这一点。