如何使用重新选择将道具传递给包装在容器中的子组件?
How can I pass props down to a child component that is wrapped in a container using reselect?
我正在尝试将 props 从父组件传递到包装在容器中的子组件。我想使用 select 或使用作为道具传递的字符串,以便它可以 select 父数据的子状态。
目前数据结构如下:
Industry: {
Data: {
coolants: [array],
machines: [array],
tools: [array]
}
}
使用 selectors 我可以 select 获取所有行业数据,但是我尝试仅对 'coolants' 使用 selectors 到 select
在我的父组件中,我将 'coolants' 的道具传递给 select:
<ChartContainer category='coolants' />
ChartContainer.js:
const mapStateToProps = createStructuredSelector({
data: makeSelectData(),
})
const withConnect = connect(mapStateToProps, null)
const withReducer = injectReducer({ key: 'industry', reducer })
export default compose (
withReducer,
withConnect
)(ChartComponent);
selectors.js
const selectDomain = () => state => state.get('industry')
const makeSelectData = () => createSelector(
selectDomain(),
substate => substate.toJS()
)
export {
makeSelectData
}
你需要两件事:
- 在选择器中使用组件道具的类别值 (mapStateToProps docs: ownProps);
- 使用此道具在您的不可变数据结构中获取嵌套值 (ImmutableJS docs: getIn);
可能的变化是:
const selectDomain = () => (state, props) => state.getIn(['industry', props.category])
我正在尝试将 props 从父组件传递到包装在容器中的子组件。我想使用 select 或使用作为道具传递的字符串,以便它可以 select 父数据的子状态。
目前数据结构如下:
Industry: {
Data: {
coolants: [array],
machines: [array],
tools: [array]
}
}
使用 selectors 我可以 select 获取所有行业数据,但是我尝试仅对 'coolants' 使用 selectors 到 select
在我的父组件中,我将 'coolants' 的道具传递给 select:
<ChartContainer category='coolants' />
ChartContainer.js:
const mapStateToProps = createStructuredSelector({
data: makeSelectData(),
})
const withConnect = connect(mapStateToProps, null)
const withReducer = injectReducer({ key: 'industry', reducer })
export default compose (
withReducer,
withConnect
)(ChartComponent);
selectors.js
const selectDomain = () => state => state.get('industry')
const makeSelectData = () => createSelector(
selectDomain(),
substate => substate.toJS()
)
export {
makeSelectData
}
你需要两件事:
- 在选择器中使用组件道具的类别值 (mapStateToProps docs: ownProps);
- 使用此道具在您的不可变数据结构中获取嵌套值 (ImmutableJS docs: getIn);
可能的变化是:
const selectDomain = () => (state, props) => state.getIn(['industry', props.category])