サイドバーとダッシュボードをレンダリングする単純なアプリ コンポーネントを作成しました。サイドバー内のリンクをクリックすると、AJAX リクエストを実行してダッシュボードの状態を変更したいと考えています。クリック ハンドラー関数を index.js アプリ コンポーネントに移動して、小道具をダッシュボードに渡すことができるようにしました。
index.js:
import React from "react";
import { NavBar } from "./components/NavBar";
import { NavBarSide} from "./components/NavBarSide";
import { Dashboard} from "./components/Dashboard"
import { render } from "react-dom";
class App extends React.Component {
handleNavClick(url) {
console.log(url)
}
render() {
return (
<div>
<NavBar/>
<div className="container-fluid">
<div className="row">
<Dashboard/>
<NavBarSide clickHandler={(url) => this.handleNavClick(url)}/>
</div>
</div>
</div>
)
}
}
render(<App/>, window.document.getElementById("root"));
私のNavBarSideはそうです...
NavBarSide.js:
import React from 'react';
import { Nav, NavItem, NavLink } from 'reactstrap';
export class NavBarSide extends React.Component {
render() {
return (
<Nav className="col-md-2 d-none d-md-block bg-light sidebar">
<div className="sidebar-sticky">
<ul className="nav flex-column">
<NavItem className="nav-item">
<NavLink className="nav-link" href="#" onClick={this.props.clickHandler("/api/highest/price")}>Highest Price</NavLink>
</NavItem>
</ul>
</div>
</Nav>
);
}
}
予想される動作ではなく、この関数はすぐに実行されるように見えます。
これを行うためのより良い方法がある場合 (react-router v4 を使用すると思います)、それも含まれていると助かります。