小编emp*_*eal的帖子

将类组件(具有本地状态)转换为无状态功能组件和容器

我是 react-redux 的新手,目前正在从事一个项目,我们的软件架构团队要求我们将所有组件编写为无状态功能组件(在React 0.14 中引入),并且每当我们需要向它们传递一份 redux 时声明我们应该使用容器。

我的问题是: 这种模式是否适用于每个组件以及如何适用?即使对于具有自己“状态”(不是 redux 状态)的基于类的组件?是否可以将所有类组件都重写为无状态功能组件加一个容器?

我问的原因实际上更具体:团队决定使用reactstrap-tabs在我们的组件中实现选项卡功能。选项卡将位于父组件内,并且在每个选项卡内将显示不同的子组件。从文档看来,父选项卡组件应该实现为基于类的组件(处理 this.state)。是否可以将其重写为无状态功能组件和容器?

任何帮助将不胜感激,因为我坚持这一点。这是示例代码...

import React from 'react';
import { TabContent, TabPane, Nav, NavItem, NavLink, Card, Button, CardTitle, CardText, Row, Col } from 'reactstrap';
import classnames from 'classnames';
import MyFirstChildComponent from '/components/MyFirstChildComponent';
import MySecondChildContainer from '/containers/MySecondChildContainer';


export default class TabbedParent extends React.Component {
  constructor(props) {
    super(props);

    this.toggle = this.toggle.bind(this);
    this.state = {
      activeTab: '1'
    };
  }

  toggle(tab) {
    if (this.state.activeTab !== tab) {
      this.setState({
        activeTab: tab …
Run Code Online (Sandbox Code Playgroud)

reactjs redux

5
推荐指数
1
解决办法
513
查看次数

访问 mapStateToProps 中的 state 属性

我需要访问容器内 redux 状态的特定属性。这些属性将依次用作获取其他嵌套属性并将它们映射到组件 props 的键。我使用 immutableJS。

在 mapStateToProps 中执行此操作的最佳方法是什么?这会导致任何性能开销还是因为 mapStateToProps 已经将整个状态作为参数接收了所以没问题?

这是一个例子。

状态选择器:

export const userSettingsState = state => state.get('userSettings');
export const transactionsState= state => state.get('transactions');
Run Code Online (Sandbox Code Playgroud)

userSettings 是一个不可变的 Map,而 transactions 也是 userID 和交易列表对的 Map。

const mapStateToProps = (state) => {
  const curUID = userSettingsState(state).get('currentUserID');
  return {
    trList: transactionsState(state).getIn([curUID, 'trList'])
  };
};
Run Code Online (Sandbox Code Playgroud)

我需要 currentUID 来访问用户事务。上面的示例工作正常。但这是最好的方法吗?

reactjs redux react-redux

5
推荐指数
1
解决办法
2840
查看次数

标签 统计

reactjs ×2

redux ×2

react-redux ×1