試圖重構我的菜單,使用列表從材料UI。材質UI:菜單重構
的unrefactored菜單看起來像這樣
<SelectableList id="menu" value={location}>
<ListItem primaryText="Encoding" primaryTogglesNestedList={true} value="/encoding" nestedItems={[
<ListItem primaryText="Base32" containerElement={<Link to="/base32"/>} value="/base32"/>,
<ListItem primaryText="Base32Hex" containerElement={<Link to="/base32Hex"/>} value="/base32Hex"/>,
<ListItem primaryText="Base64" containerElement={<Link to="/base64"/>} value="/base64"/>,
,並明確有很多的樣板,所以我決定創建一個自定義組件,這將處理duplicities代碼
import React from 'react';
import {ListItem} from 'material-ui/List'
import {Link} from 'react-router'
const MenuItem = ({anchor, ...other}) => (
<ListItem containerElement={<Link to={anchor} />} value={anchor} {...other} key={"item-"+ anchor}/>
);
export default MenuItem;
問題是,當我用它
<MenuItem primaryText="Base32" anchor="/base32" />
menuItem不再是可選。更進一步,召回從SelectableList的ID值=「菜單中的」值= {}位置(擴展菜單,當頁面刷新),我不得不增加值標籤菜單項和(口是心非回)。
我應該如何處理這種重構?
更新 的jsfiddle(簡化的例子):https://jsfiddle.net/1vk8wzoc/27/
你可以發佈codepen或東西p租? – Chris
好一點,https://jsfiddle.net/1vk8wzoc/27/ – malejpavouk