react-redux的state改变却没有重新渲染

let data = {
    list:[{
        key:0,
        name:"aaa",
        gender:1,
        birthday:"1999-07-23",
        hobby:'篮球'
    },
    {
        key:1,
        name:"bbb",
        gender:1,
        birthday:"1999-10-02",
        hobby:'链球'
    }]
}

const counter = (state = data, action) => {
    switch (action.type) {
          case "DELETE_MEMBER":
              state.list.splice(action.idx,1);
              console.log(state);
              return state;
        default:
          return state
  }
}

export default counter;

action.idx是删除的序号,我console出来发现state确实变了,但是却没有渲染
阅读 4.9k
2 个回答

state的引用没变,导致比较的时候前后state相等,所以没触发渲染。
redux是不可变数据的,每次数据变更需要返回一个新的数据。

需通过监听store的数据变化重新setstate,store提供subscribe这个方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题