将用户数据库ID存储在Redux中是否属于不良实践?
将数据库ID存储在Redux Store中的可行性分析
完全可行,这属于前端状态管理的常规操作,算不上不良实践,核心原因如下:
- 状态同步与复用:用户登录后,收藏商家这类关联数据需要在多个页面/组件实时展示,将包含
storeId的对象存在Redux中,能快速实现跨组件状态共享,避免重复发起后端请求。 - CRUD操作高效性:直接从Redux状态中读取
storeId来执行添加、删除收藏等操作,逻辑清晰且无需额外数据转换,能简化前端业务代码的编写。 - 数据安全性可控:
storeId作为数据库主键属于非敏感业务标识,只要接口层面做好权限校验(比如验证当前登录用户是否有权限操作对应商家),存储在前端Redux中不存在安全风险——毕竟这类ID在接口请求中也会传递,前端本身无法完全隐藏。
需要注意的几个细节:
- 确保Redux状态与后端数据同步:比如删除收藏后,要及时更新Redux中的收藏数组,避免页面展示与实际后端数据不一致。
- 兼容状态持久化:如果使用
redux-persist这类持久化插件,storeId(Guid字符串)可以正常序列化,不会出现存储异常。
举个处理收藏删除的Redux reducer示例:
const initialState = { favoriteStores: [] }; const favoriteStoresReducer = (state = initialState, action) => { switch(action.type) { case 'DELETE_FAVORITE_STORE': return { ...state, favoriteStores: state.favoriteStores.filter(store => store.storeId !== action.payload.storeId) }; // 其他操作类型 default: return state; } };
内容的提问来源于stack exchange,提问作者Adam Brittain
相关产品推荐
相关产品推荐

