javascript - 在 redux 中的同一事件中实现不同操作的正确方法

标签 javascript reactjs redux react-redux

我正在尝试通过 React 学习 Redux,所以我正在开发一个简单的扑克游戏(德州扑克),我有一个翻牌,翻牌由 3 张牌组成,转牌(1 张牌)和河牌(1卡)

enter image description here

在棋盘下方我有一个“下一阶段”按钮,点击后应该先填充翻牌圈,然后在下一个点击添加转牌圈,再点击添加河牌

import React, {PropTypes} from 'react';

const PhaseButton = ({onClick}) => {

    return (
        <div id="phaseButtonContainer">
            <button onClick={onClick}>Next phase</button>
        </div>
    );

};

PhaseButton.propTypes = {
    onClick: PropTypes.func.isRequired
};

export default PhaseButton;

我也为每个 Action 创建了这些:

const addFlop = (cards) => {
    return {
        type: 'ADD_FLOP',
        cards: cards
    };
};

const addTurn = (card) => {
    return {
        type: 'ADD_TURN',
        card: card
    };
};

const addRiver = (card) => {
    return {
        type: 'ADD_RIVER',
        card: card
    };
};

卡片由另一项随机挑选的服务提供。

问题是:选择卡片/卡片和决定使用哪个 Action 的逻辑应该放在哪里?这非常复杂,因为在同一个按钮中会发生不同的操作,而且我还必须读取状态才能知道要执行哪个阶段

最佳答案

看看redux-thunk中间件。它允许您在一个 Action 创建器中调度尽可能多的 Action 。所以这个想法是你有一个像

nextPhase = (cards) => {
  return dispatch => {
    // some logic
    dispatch(addFlop(cards));
    // more logic
    dispatch(addTurn(cards));
    // more logic
    dispatch(addRiver(cards));
  };
}

并且您可以根据您的逻辑调度不同的操作。它们也可以是异步的。

关于javascript - 在 redux 中的同一事件中实现不同操作的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38891636/

相关文章:

javascript - D3.js 从圆形到三 Angular 形的可视化

reactjs - redux-form,根据其他字段值设置字段可见性

javascript - 有没有更好的方法来避免在渲染时重新创建函数

javascript - 如何在 React with Typescript 中使用 Material UI 自定义变体

javascript - 如何解决 TSX 中的类型 'void' 无法分配给类型 'ReactNode' 问题

angularjs - Angular、Redux、ES6、单元测试 Controller

redux - __react-router/v4__如何访问BrowserRouter中的历史实例?

javascript - 在 javascript 中使用 Math.random() 仅生成 2 个特定数字

javascript - token 的过期日期(Google OAuth2)和凭据有什么区别?

javascript - 使用动态注入(inject)的 jquery 追加 html 内容时抛出 TypeError :null is not an object (evaluating "$("body").append") 错误