是否可以创建通用的redux更新操作

时间:2017-02-08 14:47:26

标签: reactjs redux

哪种方法更好,为什么?可能会有更多的字段,而不仅仅是标题和优先级。

对所有更改单独执行操作:

const todoReducer = (state, action) {
  switch (action.type) {
    case 'CHANGE_TITLE' {
      return { ...state, title: action.title }
    }
    case 'CHANGE_PRIORITY' {
      return {...state, priority: action.priority}
    }
  }
}

拥有一个通用更新功能:

const todoReducer = (state, action) {
  switch (action.type) {
    case 'UPDATE_PROPERTY' {
      return { ...state, [action.prop]: action.value }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

采取单独行动的好处是,您的代码将更具可读性,任何人都可以通过阅读来了解正在发生的事情。

switch (action.type) {
    case 'CHANGE_TITLE' {
      return { ...state, title: action.title }
    }
    case 'CHANGE_PRIORITY' {
      return {...state, priority: action.priority}
    }
}

就像你提供的例子一样,只需阅读动作,就可以很容易地知道减速器会做什么。

单独操作(我能想到的)的唯一缺点是,如果有太多的动作执行相同类型的更改,那么代码将变得非常冗长并且代码的DRYness将不会被维护。

因此,在这种情况下,您可以考虑创建通用操作并将其用于所有更改。因此,将来您需要进行一些更改,您将需要更改该操作。这是与编码中的DRY原理相关的好问题。 https://softwareengineering.stackexchange.com/questions/103233/why-is-dry-important

如果代码可读性不是很重要,并且您希望代码尽可能短并且还希望保持代码的干燥,那么您可以创建一般操作。

就性能而言,我认为它不会影响性能。