- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个 REST API 来编辑用户配置文件。这里涉及到两种方法
当然,当用户更新他的个人资料时,我想获取完成分数。
这是我(天真的?)使用 redux
和 redux-thunk
action creators 执行此操作的方法
function updateProfileAction(userId, profile) {
return function (dispatch) {
dispatch("PROFILE_UPDATE", /*...*/)
api.updateProfile(userId, profile)
.then(repsonse => dispatch("PROFILE_UPDATE_SUCCESS", /*...*/))
// ▼ triggers the action that fetch the completion score
// this is the line that bugs me
.then(() => fetchProfileCompletionAction(userId))
}
}
这条线让我烦恼的是:
udpateProfileAction
突然负责也获取完成);例如,如果出于某种原因我不想再显示完成(假设我删除了显示它的组件)并且忘记删除这行代码,则 fetchCompletion
将被触发但永远不会在图形组件中使用)。
我在想,也许在消费完成被抓取的组件中,我可以在这个时候订阅商店和dispatch
。这将使我能够以更具 react 性的方式
function Completion(props) {
props.store.subscribe(state => {
//check if profile has changed
dispatch(fetchProfileCompletionAction(userId))
})
return <div> {props.completion} </div>
}
这是个好主意吗?有一个更好的方法吗?此外,我想检查相关状态是否已更改对于此解决方案来说并非易事。
最佳答案
就我个人而言,我更喜欢您当前的解决方案。
我是这样想的:
有了这种理念,如果引发了一个没有 reducer 正在寻找的额外 Action ,也没关系。如果某些状态发生变化而没有任何组件会呈现,那也没关系。
对于您的第二个建议,正如您所建议的那样,很难确定状态是否已更改,因为您只有当前状态,而没有以前的状态,才能确定这一点。
如果你确实想做这样的事情,你可以使用 componentWillReceiveProps
并使用 react-redux 连接组件,以便状态更改通过 props 进入,例如:
class ProfileSuccessNotification extends React.Component {
componentWillReceiveProps(nextProps) {
if (!this.props.success && nextProps.success) {
this.props.showNotification(nextProps.userId)
}
}
render() {
return this.props.show ? <p>{this.props.userId} fetched successfully!</p> : null
}
}
// map from where ever in your state
const mapStateToProps = (state) => ({
userId: state.profile.userId,
success: state.profile.loaded,
show: state.profileNotification.show
})
const mapDispatchToProps = (dispatch) => ({
showNotification: (userId) => dispatch(fetchProfileCompletionAction(userId))
})
export default connect(mapStateToProps, mapDispatchToProps)(ProfileSuccessNotification)
当然,你也可以让多个 reducer 对同一个 Action 使用react。我不确定 PROFILE_UPDATE_SUCCESS
和 fetchProfileCompletionAction
引发的操作之间有什么区别,所以也许您只想在 时更新 2 个状态PROFILE_UPDATE_SUCCESS
得到提升,完全不需要链接第二个操作。
关于javascript - 如何处理 Redux 中的依赖 Action 创建者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44820768/
Android 中的 Activity Creator 是什么? 最佳答案 activityCreator 是用于创建 Android 项目的批处理文件和 shell 脚本。这早已被 android
我正在使用最新的 Qt SDK (2.4.0) 并且在让 Visual Studio 2008 CDB 正常工作时遇到问题。我遇到了以下两个我认为相关的问题 我有一个失败的断言。当该断言失败时,我会看
源代码 索引.js import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; impo
我使用 Wifimanager addNetwork() 添加三个配置,然后我想删除这些。 如何获取我的应用创建的配置。 最佳答案 如果我没看错,您需要从您的应用中删除这些添加的 WiFi。 使用 W
我一定是遗漏了一个带有标题和包含的基本概念,因为当我尝试从单独的源文件中调用最简单的函数时,我得到一个错误: main.obj:-1: error: LNK2019: unresolved exter
我想用我用 Qt creator 创建的 Qt 应用程序部署一个崩溃处理程序。经过一番摸索,谷歌的 Breakpd 似乎会完全按照我的需要做,但是关于这方面的教程很简单。因此,我有许多问题希望能得到解
我有一个 Action 创建器,我应该如何用 jest 测试它?问题是,我什至无法进入 Api 函数,这就是为什么我无法获得 LOGIN_SUCCESS,当我检查 store.getState() 时
我有两个计数器:COUNTER_1 和 COUNTER_2。所以我创建了多个 reducer 来处理它们。 export default (state = 0, action) => { switch
如何检查在 Emacs 中创建缓冲区的人的身份,然后再检查是否是同一用户访问该缓冲区?我的意思是“我是谁?”在 Unix 命令中.. 然后检查同一用户是否正在访问该文档? --> 我想要在我自己的代码
如果我有一个包含 5 行和 4 列的表。但我必须在下一行添加值。没有与数据库相关的依赖项。我有 ADD 按钮,我想像每次单击时一样对其进行编码ADD 按钮有新行的添加......我的意思是表中行的创建
我正在尝试制作一个简单的对话框来显示我的名字。看代码。 Pessoa *p = new Pessoa("Ronald Araújo", "ronald.araujo@live.com", 23); Q
我有一些模型,它们之间有 has_many 和 belongs_to 关联,如下所示: class Customer Customer instance end end end 也就是说
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Getting / setting file owner in C# 我搜索了 Internet 但没有找到
我在测试一个 Action 创建者时遇到麻烦,该 Action 创建者只是循环遍历传递给它的数组,并为该数组中的每个项目分配一个 Action 。这很简单,我似乎无法弄清楚。这是 Action 创建者
我使用 redux 和 redux-thunk 来执行异步操作。 在我的组件中,我有以下代码 class Counter extends Component { componentDidMou
假设我有一个 REST API 来编辑用户配置文件。这里涉及到两种方法 一种更新用户个人资料的方法; 获取当前配置文件的完成分数的方法。 当然,当用户更新他的个人资料时,我想获取完成分数。 这是我(天
我有一个 react 组件,我想在 redux 中设置一些状态,当设置状态时,我想在组件中做一些其他的事情。 // Inside Component onButtnClick() {
我有一个带有 Redux 和 Jest 的 create-react-app 用于测试。我正在使用 fetch 从 Action 创建者发出 API 请求。在编写测试时,我发现无论出于何种原因——无论
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
所以我有一个在 QT Creator 中设计的 GUI。 因为我必须添加一个 createWindowContainer 小部件,所以我必须通过 C++ 将一个小部件添加到我的代码中。我正在添加一个简
我是一名优秀的程序员,十分优秀!