我有以下代碼片段:如何將對象添加到一個陣列中的存儲
動作創作者:
export function addCategories(cats){
return {
type: ADD_CATEGORY,
cats
}
}
減速器:
function posts(state = {posts: []}, action) {
switch (action.type) {
case ADD_POST: {
console.log(action.posts)
return {...state, posts: [...state['posts'], Object.assign({}, action.posts)]}
}
default:
return state
}
}
組分:
import React, { Component } from 'react';
import { connect } from 'react-redux'
import { addCategories, addPosts } from './actions/index'
class App extends Component {
render() {
console.log(this.props)
return (
<div>
<button onClick={() => { this.props.cats({ name: "stra" }) }}>Add cat</button>
<button onClick={() => { this.props.posts({ age: 23 }) }}>Add post</button>
</div>
);
}
}
const mapStateToProps = (state) => {
console.log(state)
return {
state
}
}
const mapDispatchToState = (dispatch) => {
return {
cats: (cat) => dispatch(addCategories(cat)),
posts: (post) => dispatch(addPosts(post))
}
}
export default connect(mapStateToProps, mapDispatchToState)(App)
我擁有的這個東西就是那個壓腳提升減速機完成的,而不是讓看起來像
{
// other values
posts: [] <- values go where
}
我得到的狀態看起來像這樣的狀態,:
{
// other values
posts: {
posts: []
}
}
上面的圖片正是控制檯打印出當我運行代碼。 任何意見,將不勝感激,因爲我不知道我會出錯的地方。
在此先感謝。
後動作的有效載荷是期望是數組還是單個對象?因爲它被命名爲addPosts,但是你不會傳遞一個數組給它 – NValchev