React中变异状态的缺点是什么?

时间:2017-05-08 04:22:56

标签: reactjs

我有一个具有顶级组件和许多嵌套子组件的React应用程序。顶级组件是唯一具有状态的组件。该状态采用单个变量形式:

this.state = {
  g: new BlackJackGame()
}

g包含复杂的数据结构:

class BlackJackGame{
   playerHand = []; 
   dealerHand = [];
   deck = [ /* initially 52 cards * ]; 
   ....
}

g还包含三种突变就地状态的方法:

g.deal(): take 4 cards from deck and add them to playerHand and dealerHand (2 cards each)
g.hit(): take 1 card from deck and add it to playerHand
g.stay(): take cards from deck and add to dealerHand while dealerHand's points < 17.

onDealClick看起来像这样:

onDealClick = event => {
  this.state.g.deal();
  this.setState({ g: this.state.g });
};

我知道推荐的方法是变异状态。但事实是,这非常有效。而且我多次使用过这种模式。它似乎工作得很好。据我所知,这些是唯一的缺点:

  1. 如果我需要在shouldComponentUpdate中执行脏检查(我不会),我将不得不使用deepEquals而不是指针比较。
  2. 如果我需要撤消(我不会),那么实施起来会更难。
  3. 切换到Redux可能会很痛苦,因为Redux会强迫我使用功能性的,不可变的样式而不是OO样式。
  4. 问题:我还缺少其他任何缺点吗?

0 个答案:

没有答案