通过具有定义的mapStateToProps的connect()函数创建容器组件,可以访问整个树状态的状态(store.getState())。

例如,我结合了状态树:

{
  loaded: true,
  threads: [
    {
      id: 1,
      title: "Thread 1",
      messages: [
        {
          id: 1,
          text: "Message 1"
        }
      ]
    },
    {
      id: 1,
      title: "Thread 2",
      messages: [
        {
          id: 2,
          text: "Message 2"
        },
        {
          id: 3,
          text: "Message 3"
        }
      ]
    }
  ]
}


我应该如何访问给定线程的特殊消息?

const mapStateToProps = (state) => {
  return {
    messages: getMessagesByThread(state.threads, <threadId>)
  }
}


在这种情况下,假设我不想在商店状态树(store.getState()。activeThreadId)中使用“ activeThreadId”参数。

提供threadId的最佳其他可能性是什么?

最佳答案

如果组件上有threadId作为道具,则可以通过ownProps参数将其传递:

const mapStateToProps = (state, ownProps) => {
  return {
    messages: getMessagesByThread(state.threads, ownProps.threadId)
  }
}


我认为这是最好的方法。

10-06 08:21