使用Redux和Immutable.js在React组件中嵌套对象。

时间:2017-01-04 16:21:20

标签: javascript reactjs redux immutable.js

使用伟大的react-boilerplate项目。然而,我发现的关于将react,redux和immutable.js组合在一起(甚至在样板:/中)的所有例子都是微不足道的。我的应用程序是真实的,我们有嵌套对象,嵌套数组等。

我的问题......

这是在react-redux应用程序的react组件上下文中使用immutable.js的正确模式吗?应该在组件中使用immutable.js方法还是应该在其他地方有逻辑(selector?other?)所以组件使用普通的JS对象?

如果这不正确,那么将这些碎片捆绑在一起的首选模式是什么?

    <IconMenu>
      {this.props.card.get('related_cards').map(card => (
        <MenuItem
          key={card.getIn(['stream', 'id'])}
          primaryText={card.getIn(['stream', 'name'])}
          onTouchTap={this.onTouchTap.bind(this, card.getIn(['stream', 'id']))}>
        </MenuItem>
      ))}
    </IconMenu>

这里我们只是遍历related_cards数组并显示每个stream对象名称。 (父组件包含通过redux store提供的cards的Immutable.Map)

以下是通过card提供给组件的单个this.props.card对象(以JS形式提供的可读性):

enter image description here

我问,因为我看过很多相互矛盾的例子,有些人在他们的选择器或组件中使用原始toJS() immutable.js方法,其他人则诅咒toJS()&# 39;存在并说那些没有正确使用库。

对于更多上下文...我们cards来自选择器:

export const selectCards = () => (state) => state.get('cards');

mapStateToProps

export const mapStateToProps = (state, props) => createStructuredSelector({
  cards: selectCards(),
});

0 个答案:

没有答案