通过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的最佳其他可能性是什么?
答案 0 :(得分:1)
如果你的组件有threadId
作为道具,你可以通过ownProps
param传递它:
const mapStateToProps = (state, ownProps) => {
return {
messages: getMessagesByThread(state.threads, ownProps.threadId)
}
}
这是我认为最好的方式。