我如何/在哪里定期发送行动?使用递归setTimeout进行倒计时.
从示例中得出类似于此的内容:
// Can also be async if you return a function
export function incrementAsync() {
return dispatch => {
(function _r() {
setTimeout(() => {
// Yay! Can invoke sync or async actions with `dispatch`
dispatch(increment());
_r();
}, 1000);
})();
};
}
Run Code Online (Sandbox Code Playgroud)
那么这是一个好主意,还是有更好的方法解决这个问题,比如使用中间件或从其他地方创建动作?
我更喜欢这个的通用版本,我可以通过商店控制计时器的启动/停止.
我已经设置了一个示例实现,请查看https://gist.github.com/eguneys/7023a114558b92fdd25e
从这里的讨论来看,似乎应该将Redux Reducer的状态保存在数据库中.
在这种情况下,用户身份验证之类的功能如何?
对于创建和编辑的每个用户(及其应用程序状态),是否不会创建新的状态对象来替换数据库中的先前状态?
是否会在前端使用所有这些数据并不断更新数据库中的状态?
编辑:我已经创建了一个示例Redux auth项目,它也恰好是通用Redux的示例,并使用Redux,Socket.io和RethinkDB进行实时更新.
我正在使用React.js,我的问题很简单:如果我使用React,我的应用程序必须是单页应用程序吗?
如果不是,那么如何控制它们之外的组件?通过FLUX?还有其他标准方法吗?
如果是,那么是否有任何库在React的客户端执行权限/访问验证?
非常感谢!
我们有一个与Flux架构的反应应用程序,我正在搜索任何好的库发送http请求,如angular的$ http,$ resources.
有没有办法取消行动或忽略它?
或者更确切地说,忽略行动的最佳/推荐方法是什么?
我有以下动作创建者,当我向动作创建者输入无效大小(比如说'some_string')时,除了获取我自己的警告信息外,我还得到:
Uncaught Error: Actions must be plain objects. Use custom middleware for async actions.
import { SET_SELECTED_PHOTOS_SIZE } from './_reducers';
export default (size=0) => {
if (!isNaN(parseFloat(size))) {
return {
type: SET_SELECTED_PHOTOS_SIZE,
size: size,
};
} else {
app.warn('Size is not defined or not a number');
}
};
Run Code Online (Sandbox Code Playgroud)
我redux在Discord(reactiflux)中的-channel中讨论了这个问题,其中一个建议是使用如下的redux-thunk:
export default size => dispatch => {
if (!isNaN(parseFloat(size))) {
dispatch({
type: SET_SELECTED_PHOTOS_SIZE,
size: size,
});
} else {
app.warn('Size is not defined or not …Run Code Online (Sandbox Code Playgroud) 在过去的几周里,我一直在努力学习React和Redux.现在我遇到了一个问题,我没有找到正确的答案.
假设我在React中有一个页面从链接获取道具.
const id = this.props.params.id;
Run Code Online (Sandbox Code Playgroud)
现在在这个页面上,我想使用此ID从STORE显示一个对象.
const initialState = [
{
title: 'Goal',
author: 'admin',
id: 0
},
{
title: 'Goal vol2',
author: 'admin',
id: 1
}
]
Run Code Online (Sandbox Code Playgroud)
我的问题是:从STORE查询对象的函数应该在页面文件中,在render方法之前,还是应该使用action creators并在reducers中包含该函数.我注意到reduceres似乎只包含在商店中有一个impoact的动作,但我只是查询商店.
先感谢您.
在阅读redux文档时,我发现该文档提到了这一点:
不过,你应该尽力保持状态可序列化.不要在里面放任何你不能轻易变成JSON的东西.
所以我的问题是,保持状态可序列化有什么好处?或者,如果我将不可序列化的数据存储到存储中,我会遇到什么困难?
而且我相信这并不是redux-Flux所独有的,甚至React本地州也提出同样的建议.
让我明白这里是一个例子.假设商店结构是这样的.
{
books: {
1: { id: 1, name: "Book 1", author_id: 4 }
},
authors: {
4: { id: 4, name: "Author 4" }
}
}
Run Code Online (Sandbox Code Playgroud)
这一切看起来都不错.但是,当我尝试访问"Book 1的作者"时,我必须编写如下代码:
let book = store.getState().books[book_id];
let author = store.getState().authors[book.author_id];
Run Code Online (Sandbox Code Playgroud)
现在,我要定义一个类:
class Book {
getAuthor() {
return store.getState().authors[this.author_id];
}
}
Run Code Online (Sandbox Code Playgroud)
我的商店将是:
{
books: {
1: Book(id=1, name="Book 1")
},
...
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以通过以下方式轻松获得作者:
let author = store.getState().books[book_id].getAuthor();
Run Code Online (Sandbox Code Playgroud)
第二种方法可以使"书"对象知道如何检索作者数据,因此调用者不需要知道书籍和作者之间的关系.那么,为什么我们不使用它,而不是像方法#1那样在商店中保留"普通对象"?
任何想法都表示赞赏.
我可以有这样的助焊剂动作:
{type: 'KILL', payload: {target: 'ogre'}}
Run Code Online (Sandbox Code Playgroud)
但我没有看到在这样的类(包装商店)上有一个方法之间有什么区别,
People.kill('ogre')
Run Code Online (Sandbox Code Playgroud)
如果人们是行动的唯一接收者?
我看到助焊剂调度员给了我两个好处(可能)
这些可能是好事,但还有其他原因让我失踪吗?
我没有看到的是如何以JSON对象的形式放置动作,突然强制或帮助"单向"通信流程,这是我在任何地方阅读的是具有动作和流量的巨大优势.
在我看来,无论我如何给猪打气,我仍然有效地将信息发回商店.当然行动现在经历了几层间接(动作创建者,调度员)到达商店之前,但除非我遗漏了一些事情,为所有实际目的发送该动作的组件正在更新任何正在监听的商店.杀死消息.
我在这里缺少什么?
我再次在Stack Overflow上知道我们不能问一般问题,所以我想保持这个非常具体.具有不同语法的两个代码片段在语义上(除了广播到多个商店的可能性之外)看起来完全相同.
再次,如果唯一的原因是它启用广播并为调试目的启用单点流量,我很好,但是想知道是否还有其他关于flux /调度程序的事情我错过了?
我正在使用ReactJs和Redux以及一些教程和代码,我看到人们建议并使用normalizr来保持状态平坦.但保持平稳的真正优势是什么?如果不这样,我会遇到任何问题吗?有必要吗 ?
在 Spring Webflux 中, ResponseEntity<Mono> 与 Mono<ResponseEntity> 作为休息控制器的返回类型有什么区别?
什么时候最合适?
跟进这个问题,假设我需要返回一个列表,或者假设 Foo 的几个元素,有很多返回 Flux 的例子。返回 ResponseEntity<Flux> 或 Flux<ResponseEntity> 是否有意义?
当我在寻找这个问题时,我发现这里发布了同样的问题:https : //github.com/spring-projects/spring-framework/issues/22614,但没有答案,我搜索了 spring 文档,但没有找到任何信息.
谢谢您的帮助。
flux ×10
reactjs ×8
redux ×6
javascript ×4
reactjs-flux ×2
mono ×1
normalizr ×1
react-router ×1
response ×1
spring ×1