reactjs - 在 POST/PUT/DELETE API 调用后更新 redux 存储中数据的最佳方法是什么
问题描述
您建议的可扩展方法是什么?为什么?
选项 1:进行 API 调用以修改后端数据并在 redux 中手动更新存储
// saga
export function * updateList(action){
yield call list endpoint
yield put(updateListCompleted(action))
}
// action
updateListCompleted (action){
return {
type: 'UPDATE_LIST_COMPLETED',
action,
}
}
// reducer
function reducer(state = initialState, action) {
switch (action.type) {
case actionTypes.UPDATE_LIST_COMPLETED:
return {...state, {...action.listData})
}
选项 2:进行 API 调用以修改后端数据并进行后续 GET 调用以更新存储
// saga to update backend list
export function * updateList(action){
yield call update list endpoint
yield put(getListAction(action))
}
// action
getListAction (action){
return {
type: 'GET_LIST',
action,
}
}
...
// this is triggered by the GET_LIST action
export function * getList(action){
yield call get list endpoint
yield put(getListCompleted(responseFromListEndpoint))
}
// action
getListCompleted (response){
return {
type: 'GET_LIST_COMPLETED',
response,
}
}
// reducer
function reducer(state = initialState, action) {
switch (action.type) {
case actionTypes.GET_LIST_COMPLETED:
return {...state, {...action.response})
}
解决方案
Option 1
将是通常的选择,除非有一些信息只能通过这些额外的GET
请求访问。
推荐阅读
- python - Huggingface 标记器总是编码为未知 - vocab.txt 的转换?
- javascript - 如何为现有对象设置通用吸气剂?
- c++ - 将指针数组传递给函数时出现分段错误
- python - (Python/Flask_SQLAlchemy) 无法使用“sqlite:////tmp/test.db”打开数据库文件
- angular - 在Angular中将下拉值传递给HttpGet api
- winapi - WS_POPUP 的特点是什么?
- vue.js - Vue:获取对元素或数据绑定的引用以更改其类?
- python - Opencensus - Python Notebooks 中的手动上下文传播
- postgresql-9.5 - postgres 社区版中的数据屏蔽
- java - 如何使用 java/kotlin 在 EPSON TM-T88IV 打印机中部分切纸