首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将项目添加到数据库后更新Redux状态

将项目添加到数据库后更新Redux状态
EN

Stack Overflow用户
提问于 2021-01-07 08:15:24
回答 1查看 228关注 0票数 0

我在这方面还是个新手。我正在尝试构建一个小的全栈应用程序来跟踪项目中的时间。

我有一个带有Postgresql数据库的Ruby on Rails API和一个带有Redux、Redux-React和Redux-thunk用于状态管理的React前端。所有的CRUD-功能在前端和后端之间都工作得很好,但我就是不能在任何操作后更新Redux状态。

我的初始状态

代码语言:javascript
运行
复制
{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后的操作的缩减程序

代码语言:javascript
运行
复制
{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

代码语言:javascript
运行
复制
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也不能工作,当我在应用程序上发送我的删除时,它就会完全失去状态。非常感谢大家的帮助!

EN

回答 1

Stack Overflow用户

发布于 2021-01-07 16:23:57

我认为state.data是一个数组,所以你应该这样做:

代码语言:javascript
运行
复制
case 'ADD_NEW': 
  return {
    ...state,
    data: state.data.concat({
      attributes: action.attributes,
      id: action.id,
      relationships: action.relationships,
    }),
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65605022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档