帮我弄清楚为什么没有累积商店状态。我正在制作一个类似 Twitter 的应用程序。我想向商店添加帖子。商店不断重置其状态。我看不出我需要为此更改代码的地方。事实上,在官方文档中,他们写道:(previousState, action) => newState,尽管商店存储在一个数组中,而不是像我的那样以文字形式存储: http ://redux.js.org/docs/basics /Reducers.html
我的整个应用程序都在这里: https ://github.com/SkunSHD/redux-twitter-like-app/tree/master
reducer 代码如下所示:reducers/page.js
import {
ADD_POST,
ADD_COMMENT,
LOGIN_SUCCES
} from '../constants/Page'
const initialState = {
user: '',
text: ''
}
export default function page(state = initialState, action) {
switch (action.type) {
case LOGIN_SUCCES:
return { ...state, user: action.payload }
case ADD_POST:
return { ...state, user: state.user, text: action.payload }
case ADD_COMMENT:
return { ...state, user: action.payload.user, text: action.payload.text }
default:
return state;
}
}
动作/页面动作:
import {
ADD_POST,
ADD_COMMENT
} from '../constants/Page'
export function addPost(text) {
return (dispatch) => {
dispatch({
type: ADD_POST,
payload: text
})
}
}
在reducer中,在这个地方:
你改变状态,state.text 变得等于 action.payload,即 到您通过 addPost 函数添加的文本。为了保留旧值,您需要添加,而不是覆盖,例如: