0

私は React を学んでいるので初心者です。下部のナビゲーション パネルを作成しようとしています。各 navbar 要素をハードコーディングするのではなく、navbar 要素を配列に格納し、それを navbar にマッピングする良い例を見つけました。コンポーネント自体のnavTabs配列でアイコンを動的に参照する方法がわからないことを除いて、以下が機能するようになりましたか? (たとえば)<FaIdCard />問題なく追加できますが、配列からナビゲーションを生成するポイントが無効になるため、これをハードコーディングする必要はありません。

import React from 'react';
import { Nav, NavItem} from 'reactstrap';
import { NavLink } from 'react-router-dom';
import { FaIdCard, FaInfoCircle } from "react-icons/fa";


/* This array will be mapped onto our nav elements */
const navTabs = [{
    route: "/about",
    icon: FaInfoCircle,
    label: "About"
},{
    route: "/customer",
    icon: FaIdCard,
    label: "Customer"      
}]

const Navigation = (props) => {
    return (
        <div>
            <nav className="navbar fixed-bottom navbar-light" role="navigation">
                <Nav className="w-100">
                    <div className="d-flex flex-row justify-content-around w-100">
                        { 
                        /*  index is a built-in part of .map that gives u index number. 
                            The grave accent (`) is used for template literals, or combining variables, javascript and text/html
                        */
                            navTabs.map((tab, index) =>(
                                <NavItem key={`tab-${index}`}> 
                                    <NavLink to={tab.route} className="nav-link" activeClassName="active">
                                        <div className="row d-flex flex-column justify-content-center align-items-center">
                                            <div>{tab.label}</div>
                                        </div>
                                    </NavLink>
                                </NavItem>
                            ))
                        }
                    </div>
                </Nav>
            </nav>
        </div>
    )
  };
  
  export default Navigation;
4

1 に答える 1

0

iconプロパティにアイコン コンポーネントを使用してみてください。

const navTabs = [{
    route: "/about",
    icon: <FaInfoCircle />,
    label: "About"
},{
    route: "/customer",
    icon: <FaIdCard />,
    label: "Customer"      
}]

次に、次のNavItemように追加します。

<NavItem key={`tab-${index}`}>
  <NavLink to={tab.route} className='nav-link' activeClassName='active'>
    <div className='row d-flex flex-column justify-content-center align-items-center'>
      <div>
        {tab.icon} {tab.label}
      </div>
    </div>
  </NavLink>
</NavItem>;
于 2021-12-15T13:17:53.630 に答える