javascript - 如何使用重新选择将道具传递给包装在容器中的子组件?
问题描述
我正在尝试将道具从父组件传递到包装在容器中的子组件。我想使用选择器来使用作为道具传递下来的字符串,以便它可以选择父数据的子状态。
目前数据结构如下:
Industry: {
Data: {
coolants: [array],
machines: [array],
tools: [array]
}
}
使用选择器我可以选择所有行业数据,但是我试图使用选择器来选择“冷却剂”
在我的父组件中,我将传递道具以选择“冷却剂”:
<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);
选择器.js
const selectDomain = () => state => state.get('industry')
const makeSelectData = () => createSelector(
selectDomain(),
substate => substate.toJS()
)
export {
makeSelectData
}
解决方案
你需要两件事:
- 在选择器中使用组件道具的类别值(mapStateToProps 文档: ownProps);
- 使用这个道具在你的不可变数据结构中获得嵌套值(ImmutableJS 文档:getIn);
可能的变化是:
const selectDomain = () => (state, props) => state.getIn(['industry', props.category])
推荐阅读
- processing - 在处理 3 问题中将摩尔斯电码编码器转换为解码器
- reactjs - Material UI Select 组件上的“keepMounted”属性未将菜单项安装到 DOM
- python - 无法使用 BeautifulSoup 和 Requests 抓取下拉菜单
- c# - 使用自动换行将整个 url 保存在文本块中
- delphi - 如何在循环内同时显示图像
- import - 是否可以通过 xml 转储导入来保护 Mediawiki 页面表单覆盖?
- angular - 使用默认 Cloudfront dns 放大 cookie 身份验证不起作用
- python - 提取 JSON 标签并构建一个新的 Json
- graph - 在子图上使用算法
- r - 无法在 Rstudio 中读取任何 XML 文件