我在这方面还是个新手。我正在尝试构建一个小的全栈应用程序来跟踪项目中的时间。
我有一个带有Postgresql数据库的Ruby on Rails API和一个带有Redux、Redux-React和Redux-thunk用于状态管理的React前端。所有的CRUD-功能在前端和后端之间都工作得很好,但我就是不能在任何操作后更新Redux状态。
我的初始状态
{data: Array(2), included: Array(6)}
data: Array(7)
0:
attributes: {done: false, date: "2021-01-08", name: "Test3", customer: "Test3", sum_hours: 0}
id: "69"
relationships: {tasks: {…}}
type: "project"
__proto__: Object
1: {id: "70", type: "project", attributes: {…}, relationships: {…}}
2: {id: "71", type: "project", attributes: {…}, relationships: {…}}
3: {id: "72", type: "project", attributes: {…}, relationships: {…}}
4: {id: "73", type: "project", attributes: {…}, relationships: {…}}
5: {id: "1", type: "project", attributes: {…}, relationships: {…}}
6: {id: "5", type: "project", attributes: {…}, relationships: {…}}
length: 7
__proto__: Array(0)
included: (6) [{…}, {…}, {…}, {…}, {…}, {…}]
__proto__: Object这是我从成功发布到db后的操作的缩减程序
{type: "ADD_NEW", data: {…}}
data:
attributes: {done: false, date: "2021-01-08", name: "Testi1", customer: "Testi1", sum_hours: 0}
id: "74"
relationships: {tasks: {…}}
type: "project"
__proto__: Object
type: "ADD_NEW"
__proto__: Object我的Reducer
const ProjectReducer = (state = [], action) => {
switch (action.type) {
case 'ADD_NEW':
return Object.assign({}, state.data,
{
attributes: action.attributes,
id: action.id,
relationships: action.relationships
})
case 'DEL_PRO':
return state.data.filter(st => st.id != action.id)
case 'INIT_PROJECTS':
return action
default:
return state
}
}
export default ProjectReducer我已经在我的reducers ADD_NEW上尝试了很多东西,你现在看到的一个是最新的,不能得到任何东西来更新状态。即使是DEL_PRO也不能工作,当我在应用程序上发送我的删除时,它就会完全失去状态。非常感谢大家的帮助!
发布于 2021-01-07 16:23:57
我认为state.data是一个数组,所以你应该这样做:
case 'ADD_NEW':
return {
...state,
data: state.data.concat({
attributes: action.attributes,
id: action.id,
relationships: action.relationships,
}),
}https://stackoverflow.com/questions/65605022
复制相似问题