通过具有定义的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)
}
}
我认为这是最好的方法。