reactjs - 管理依赖状态
问题描述
我有以下状态:
{
programmeCodes, // generated from asynch resource
programmeColors // depends on programmeCodes
}
以及针对异步资源的以下操作:
export const REQUEST_PROGRAMME_CODES = 'REQUEST_PROGRAMME_CODES'
export const RECEIVE_PROGRAMME_CODES = 'RECEIVE_PROGRAMME_CODES'
function requestProgrammeCodes() {
return {
type: REQUEST_PROGRAMME_CODES,
}
}
export function fetchProgrammeCodes() {
return function (dispatch) {
dispatch(requestProgrammeCodes())
return api.fetchProgrammes()
.then(
response => response,
error => console.log('An error occurred.', error)
)
.then(json =>
dispatch(receiveProgrammeCodes(json))
)
}
}
function shouldFetchProgrammeCodes(state) {
const codes = state.programmeCodes.codes.length > 0
if (!codes) {
return true
} else if (codes.isFetching) {
return false
} else {
return codes.didInvalidate
}
}
export function fetchProgrammeCodesIfNeeded() {
return (dispatch, getState) => {
if (shouldFetchProgrammeCodes(getState())) {
// Dispatch a thunk from thunk!
return dispatch(fetchProgrammeCodes())
} else {
return Promise.resolve()
}
}
}
“programmeCodes”是生成“programmeColors”所需的依赖项。我希望(通过良好的实践)能够在 React 组件中请求“programmeColors”,而不必担心是否已收到 programCodes。
如何为“programmeColors”编写操作以实现上述目标?
解决方案
推荐阅读
- python-3.x - 在python中读写csv文件时如何使用线程锁?
- mysql - 无法使用 leftjoin 从 2 个表中获取所有数据
- c++ - 如果 constexpr 分支的 MSVC 和 clang 的不同行为
- java - 使用 Java 列出来自 Http Server 的文件,而无需手动解析 HTML 页面?
- java - Java SE VS。JDK 和 JAVA_HOME 变量
- opencv - 我不知道关于代码检查尺码的opencv错误
- firebase - Firebase Functions onUpdate 循环问题
- python - 我究竟做错了什么?它显示列表索引超出范围
- vb.net - 如何使用保存对话框保存自动 XML 文件?
- python - 从时间索引的熊猫数据帧中获取两个时间戳内特定时间的值