javascript - 将 React 路由组件传递给父组件 props 函数
问题描述
如果这听起来很愚蠢,非常新的反应并原谅我,但我正在努力解决它。
我的组件结构是这样的:
- 仪表板
- 计费
- 发票
我想要它,以便当您单击计费内的发票链接时,发票组件会呈现在仪表板中的 div 中。
- 仪表板<<<<
- 帐单____^
- 发票>>>
我不知道我的方法是否正确,我有什么错误,或者它是否完全不正确,我需要重新考虑我的理解。
仪表板:
<Route
path="/dashboard/billing"
render={() => (
<Billing
togglePanel={this.togglePanel}
fillPanel={this.fillPanel}
/>
)}
/>
BILLING:
<Route
path="/dashboard/billing/invoice/:id"
render={props => (
<Invoice {...props} />
)}
/>
Inside billing there is a list of Links as:
<Link
onClick={event => {
this.props.togglePanel();
}}
className="item"
to={`/dashboard/billing/invoice/${d.id}`}
>
View
</Link>
所以我们很清楚我正在使用:
从“react-router-dom”导入{链接,路由};
在仪表板内部,我有一个要填充发票组件的 div。
fillPanel() 函数改变了 Dashboard 中的状态,从而将目标 div 的内容更改为传递的任何内容(这只是我的尝试)。
我知道如何在切换等上显示和隐藏,所以这不是问题,我只是想知道在单击 Billing 中的项目后渲染时如何用 Invoice 组件填充 Dashboard 中的目标 div。
解决方案
您不需要为您的用例呈现路线。据我所知Invoice.js
,只要您单击Billing.js
.
你可以做的是,而不是:
<Link
onClick={event => {
this.props.togglePanel();
}}
className="item"
to={`/dashboard/billing/invoice/${d.id}`}
>
View
</Link>
利用:
<div
onClick={event => {
this.props.togglePanel();
}}
className="item"
> View
</div>
并且,而不是:
<Route
path="/dashboard/billing/invoice/:id"
render={props => (
<Invoice {...props} />
)}
/>
利用:
<div className="div-where-you-want-to-show-the-invoice">
<Invoice {...props, d.id}/>
</div>
推荐阅读
- android - 如何从 Google Maps SDK V3 的中心获取坐标
- android-room - 如何添加另一个字符串以及如何检索它。我尝试在伴生对象中添加另一个常量但不工作
- node.js - 在创建一个 React 应用程序后运行 npm start : [npx create-react-app app-name doesn't] 不会启动任何东西
- r - mutate_at 仅满足特定条件的变量
- image-processing - 水印为二维条码
- java - 搜索 ArrayList 时出现 Java JSON ClassCastException
- node.js - socket.emit 从浏览器到浏览器不触发
- c - 结构数组的动态内存分配
- json - 如何检查post请求中json.body中是否有空值
- firebase - 刷新页面时显示从 Firebase 上传的图像时出现问题