从研究中,我发现thunk是一种工具,您可以使用它将动作链接在一起和/或处理回调、异步动作和副作用。
我无法理解thunk中间件指南。他们总是引用store.dispatch(就像大多数关于redux的教程一样),但我从未真正调用调度,也从未访问过商店,所以我不确定如何实现他们提出的任何建议。(我假设这是因为我在反应中使用mapDispatchToProps......这在我的动作创建者文件中不是一个选项)
下面是我的操作创建者(为了清晰起见,删除了一些代码):
import { CREATE_NEW_SAMPLING_EVENT } from '../Constants/ActionTypes';
import { emptySamplingEvent } from '../Constants/SamplingEvent';
import _ from 'lodash';
import uuidv4 from 'uuid';
export function createNewSamplingEvent(eventName) {
let newEvent = _.cloneDeep(emptySamplingEvent);
newEvent.eventID = uuidv4();
newEvent.eventName = eventName;
newEvent.dateModified = new Date();
//TODO: call an optional callback
//TODO: dispatch eventLinkTable event
return { type: CREATE_NEW_SAMPLING_EVENT, event: newEvent }
}
我想做的事情列在待办事项中。
我有另一个动作,在不同的动作创建者文件和不同的缩减器中称为EVENT_LINK_TABLE,它将这个动作创建者的uuid作为参数。我想在完成将此事件创建为新事件后立即发送此事件链接表操作(使用uuid)。
此外,我还想调用一个标准回调(实际上它将调度另一个操作-LOAD_SAMPLNG_事件)。。但我不确定如何调用回调并返回操作。我还听说,动作创造者那样做是不好的做法,如果在创作过程中出现失败,我也不希望这种情况发生。
要添加其他信息,我将在我的react代码中发送操作:\
handleBrandNewButtonClick = () => {
this.props.createNewSamplingEvent(this.state.newSamplingEventName);
}
此组件被连接:
const mapStateToProps = function (state) {
return {
samplingEvents: state.SamplingEvents, //to get list of sampling events to check for uniqueness for that user
}
}
const mapDispatchToProps = {
createNewSamplingEvent,
}
export default withRouter(
withStyles(styles, { withTheme: true })
(connect(mapStateToProps, mapDispatchToProps)
(NewEventForm)
)
);
您可以在函数内部运行业务逻辑,并将操作本身分派。动作创建者setNewsCreator
创建一个POJO。然后,POJO被调度
编辑为将被减速器拾取的操作
// action creator
const setNewsCreator = ({ news }) => ({ type: 'SET_NEWS', news })
const fetchNews = () => async dispatch => {
const response = await getNews()
dispatch(setNewsCreator({ news: response }))
}
以及它在组件中的用法
componentDidMount() {
this.props.fetchNews() // assuming you've added this function to your mapDispatchToProps
}
为我的第一句话道歉。事后看来,我没有正确地解释行动。
看来你对还原没有适当的了解。我会告诉你还原商店是如何运作的。然后你将能够理解redux。
在redux,我们有五件事,
动作创建者、动作、调度程序、还原程序、存储
想象一下你想开一家保险公司。好的,这是我们的第一位客户。他来到公司要求“嘿,我需要开一个新账户”。
现在前台人员会说,‘好的,填好这张表格,交给我’,一旦他把表格交给前台,那么这个人就可以离开了。
一旦调度员拿到表格,他会复印几份并发送给你们公司的所有部门。政策部、会计部、索赔部等
现在每个部门都会检查这是什么样的表格。或者是关于开一个新账户。好的,会计部门会得到这笔钱,并把它加到公司的金库里。此外,政策部门将为客户建立一个新的账户。但是,索赔部门不会关心这个表格,因为它不是关于索赔的。这就是我们为对象设置type属性的原因。
操作创建者应该只返回普通对象。例如,如果动作创建者中有一个异步调用,它不会返回一个普通对象,所以我们需要一些中间件来避免这个问题。在这里,我们有redux-thunk。这个中间件将帮助我们手动完成调度过程。
因此,我们将dispatcher作为动作创建者的参数。然后,一旦我们从异步进程中获得结果,现在我们就可以在action creator中手动调度结果。这个redux thunk充当调度器和还原器之间的中间件。
我正在阅读Apache Flink的文档:https://ci.apache.org/projects/flink/flink-docs-stable/concepts/runtime.html. 正如医生提到的, 对于分布式执行,Flink将运算符子任务链接到任务中。每个任务都由一个线程执行。将运算符链接到任务中是一种有用的优化:它减少了线程到线程切换和缓冲的开销,并在减少延迟的同时提高了整体吞
考虑以下情况: 当用户导航到页面时,将调度两个异步Redux操作以并行获取两组相关数据。如果这些获取中的任何一个失败,组件将检测到它,它将在下一个周期中呈现错误组件,而下一个周期又在装载时分派操作。 但是,其他行动仍有待解决/拒绝,将破坏清洁状态。目标是在调用action creator时,中断此(最好是许多其他)挂起的异步操作。好吧,不管发生什么,未决promise都应该以任何方式解决/回应。
问题内容: 我有一个Java项目,我想开发它而不替换源代码。我想将代码链接到我的工作空间而不进行物理替换吗? 问题答案: 从中选择您要引用的 右键单击并转到(或按Ctrl-Enter)。 在中,您可以添加当前打开的另一个项目。 如果您要覆盖某个类,则可以在当前项目中对其进行复制,然后将其移至中的类路径中。
问题内容: 考虑下面的类 问题在于上面的方法太长并且有很多 语句。我想到了一些重构,但是仍然不确定该怎么做。我在考虑类似连锁模式的东西。然后,我将实现几个检查器类,这些检查器类调用链中的下一个检查器,或者返回相应的。 但是后来我有了一个更好的主意(至少我是这样认为的):为什么表现得不像Java 8?我想用类似的- - -pattern。但是我不知道如何实现这一点。我在想类似的东西: 这个想法是:当
我是编程新手,正在使用Python学习更复杂的数据结构,我发现很难理解使用头和尾向链表添加元素的概念。 关键是当我添加第一个元素时,一切都清楚了。由于head一开始是None,它将向tail和head添加新节点。当我添加第二个元素时,问题就开始了:我不明白为什么第二个元素会与当这行代码self时_尾执行next=newNode。在这行代码之后,成为第二个元素,这似乎很符合逻辑,因为我必须在不断添加
问题内容: 我有两个完成。我想做以下情形:如果第一个Completable到达onComplete,则继续第二个Completable。最终结果将是第二完成的onComplete。 当我有单个 getUserIdAlreadySavedInDevice() 和Completable login() 时,这就是我的方法: 问题答案: 您正在寻找运营商。 返回一个Completable,它首先运行此C