[英]React-Router v4 - pass parameters to withRouter
这段代码可以正常工作:
const LinkButton = withRouter(({ history }) => (
<ListItem button onClick={() => history.push('/url1')}>
<ListItemIcon>
<ListIcon />
</ListItemIcon>
<ListItemText primary="name1" />
</ListItem>
))
现在,我尝试将数组映射到相同的组件并得到错误:
const navItems = [{ name: 'name1', url: '/url1' }, { name: 'name2', url: '/url2' }];
const items = navItems.map(
item => withRouter(({ history }) => (
<ListItem button onClick={() => history.push(item.url)}>
<ListItemIcon>
<ListIcon />
</ListItemIcon>
<ListItemText primary={item.name} />
</ListItem>
))()
);
错误文本:TypeError:无法读取未定义的属性'wrappedComponentRef'。
有任何想法吗?
withRouter
是一个高阶组件,它返回组件类 ( MyComponent
)而不是组件实例 ( <MyComponent />
)。
另外, LinkButton
是硬编码的; 它不接受道具道具。
然后,您需要更新至以下内容:
let LinkButton = ({ history, ...item }) => (
<ListItem button onClick={() => history.push(item.url)}>
<ListItemIcon>
<ListIcon />
</ListItemIcon>
<ListItemText primary={item.name} />
</ListItem>
);
LinkButton = withRouter(LinkButton);
现在,循环应为:
navItems.map(item => <LinkButton {...item} key={item.name} />);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.