2016-10-15 13 views
2

タブの名前、タブのID、アイコンのID(その外部キー)を持つタブのAPIを持っています。タブのアイコンを表示したいのですが、どのようにapiがそのように設計されているかを表示できます。タブのアイコンを表示

API /タブ

[ 
{ 
    "id": 114, 
    "name": "analytics", 
    "icon": 2, 
}, 
{ 
    "id": 127, 
    "name": "share", 
    "icon": 2, 
} 

]

API /アイコン

[ 
    { 
     "id": 1, 
     "name": "computer", 
    }, 
    { 
     "id": 2, 
     "name": "insert-photo", 
    }, 
    { 
     "id": 3, 
     "name": "account-circle", 
    } 
] 

header.js

componentDidMount() { 
     this.props.fetchTabs(); 
    } 

    render() { 
    const tabs = _.map(this.props.tabs.tabs, (tab) => 
      <span className="tab" key={tab.id}> 
      <a href="">{tab.name}</a> 
      </span> 
    ); 

const mapStateToProps = (state) => ({ 
    fetchIcon: state.fetchIcon, 
    tabs: state.tabs, 
}); 

function mapDispatchToProps(dispatch) { 
    return bindActionCreators({ 
    fetchTabs, 
    }, dispatch); 
} 

タブのアイコンをIDとリンクさせて表示する方法を教えてください。

const mapStateToProps = (state) => ({ 
    fetchIcon: state.fetchIcon, 
    tabs: state.tabs.map(tab => ({ 
     ...tab, icon: state.fetchIcon.find(icon => 
      icon.id === tab.icon) 
     ).name 
    }), 
    tabsPost: state.tabsPost 
}); 

enter image description here

答えて

1

を使用すると、エラーのスクリーンショット

あなたがmapStateToProps内のデータを非正規化することができます。

const mapStateToProps = state => ({ 
    tabs: state.tabs.map(tab => ({ 
     ...tab, 
     icon: state.icons.find(icon => 
      icon.id === tab.icon 
     ).name 
    }) 
}) 

tab.iconcomputer、のいずれかになりますコンポーネントのまたはaccount-circle

編集:私は予期しないトークンとして.nameの部分でエラーが発生します

const mapStateToProps = state => { 
    return { 
     tabs: state.tabs.tabs.map(tab => { 
      const icon = state.deviceEventOption.find(icon => Number(icon.id) === tab.icon); 
      return { 
       ...tab, 
       icon: icon && icon.name 
      }; 
     }) 
    }; 
}; 
+0

:議論の後、我々は次のコードが出ています。 CONST mapStateToProps =(状態)=>({ fetchIcon:state.fetchIcon、 タブ:state.tabs.map(タブ=>({ ...タブ、 アイコン:state.fetchIcons.find(アイコン=> )。 } – Serenity

+0

これは、指定されたIDのアイコンを見つけることができないことを意味します。 – mostruash

+0

私はエラー画面screenshot – Serenity

関連する問題