正确使用React构造函数?

时间:2019-11-01 21:46:48

标签: reactjs react-native

在我的React Native项目中,我有一小堆具有ID的对象(总是少于20个)。我需要的对象的ID在导航路由器中找到,无法通过Redux选择器获得,我必须在组件级别获取它。所以我不得不做一点逻辑。以这种方式使用constructor方法可以吗?

class DiscussionScreen extends React.Component {
  constructor(props) {
    super(props)

    // Get discussion data using ID
    const discussion = props.discussions.find(
      item => item[ID] === props.navigation.getParam(ID)
    )

    // Pass to state
    this.state = {discussion}
  }

  render() {
    return (
      <Discussion
        discussion={this.state.discussion}
      />
    )
  }
}

2 个答案:

答案 0 :(得分:1)

您是否需要discussion中的state?作为示例的替代方法,您可以执行以下操作:

class DiscussionScreen extends React.Component {
  _getDiscussion = () => this.props.discussions.find(
    item => item[ID] === this.props.navigation.getParam(ID)
  )

  render() {
    return (
      <Discussion
        discussion={this._getDiscussion}
      />
    )
  }
}

答案 1 :(得分:0)

在构造函数中将其设置为空对象后,为什么不使用生命周期方法更改状态。 我认为,从长远来看,在构造函数中使用函数并不好。