我有一个使用React和Redux的项目。我有多个React组件需要使用一个通用方法,该方法将数据从Redux Store中删除,构建一个请求对象并触发对服务器的休息请求。
我不想写多次执行此操作的方法。那么,这个方法应该是它自己的React组件,还是应该把它放在一个普通的javascript文件中呢?如果你不渲染任何JSX,我不确定组件的含义是什么。另一方面,如果我把它放在一个普通的javascript文件中,是否可以将redux连接到该文件以访问商店中的状态?
提前致谢。
答案 0 :(得分:2)
添加operator<<
中间件可让您调度函数,然后可以访问redux-thunk
和dispatch
。从那里你可以做任何你想做的事情,比如使用选择器函数来提取你需要的状态片段,以及进行AJAX调用。 thunk动作创建者可以作为道具传递给组件,包括将它们绑定到自动调度:
getState()
更多资源:
function someThunk() {
return (dispatch, getState) => {
const state = getState();
// do anything you want here
}
}
const actions = {doStuffOnClick : someThunk};
export default connect(mapState, actions)(MyComponent);
在其https://github.com/gaearon/redux-thunk的回购中描述。答案 1 :(得分:1)
它不应该是一个组件,因为正如你所说,它没有视觉方面。
创建一个新的操作,并从您需要的任何地方发送操作。此操作可以检查商店以查看操作是否已经发生,然后不执行任何操作(或刷新)。
使用colors=[('spades','♠'), ('hearts','♥'),('diamonds','♦'),('clubs','♣')]
colors=[s for (n,s) in colors]
faces=['A','2','3','4','5','6','7','8','9','1','J','Q','K']
cards=list(__import__("itertools").product(colors, faces))
__import__("random").shuffle(cards)
nbplayers=5
nbcards=6
def cardstostr(cards):
return ",".join(map(lambda (c,f): f+c, cards))
for i in range(nbplayers):
print cardstostr(cards[nbcards*i:nbcards*(i+1)])
print cardstostr(cards[nbplayers*nbcards:])
的模块会创建您的商店。在操作模块中导入创建的商店,然后使用store.getState()检查商店的当前状态。