在更深的容器组件中访问单个Redux存储的最佳实现是什么?

时间:2016-02-16 12:19:20

标签: javascript reactjs redux flux

通过connect()函数使用已定义的mapStateToProps创建容器组件,可以访问整个树状态的状态(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的最佳其他可能性是什么?

1 个答案:

答案 0 :(得分:1)

如果你的组件有threadId作为道具,你可以通过ownProps param传递它:

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

这是我认为最好的方式。