reactjs - 基于上下文动态加载组件的侧面板
问题描述
使用反应:如何根据操作类型呈现具有不同组件的侧面板组件。举一个具体的例子:
在主页上,我有一个包含一些行的表格。每行可能属于不同的“类型”(第 1 行可能属于 A 类型,第 2 行可能属于 B 类型。
当我单击 A 类型的行时,我想渲染与 A 类型行相关的组件,以及 B 类型行的不同组件。
您几乎可以将面板定义为“小部件”区域,我可以在其中根据不同的上下文加载不同的组件,或者我在该区域之外执行的操作。
以下是我正在尝试做的事情。
解决方案
这可以通过更改存储在所选行类型的状态上的数据来完成。
例如:
state = {
currently_selected_type : ""
}
在你的渲染函数中,我们可以有这样的东西:
render(){
let SidePanelComponent = null;
if(this.state.currently_selected_type === "A"){
SidePanelComponent = (<div>A</div>);
}
else if(this.state.currently_selected_type === "B"){
SidePanelComponent = (<div>B</div>);
}
return (
<div>
<Table
onClick={
// this type will be passed from the inside Table when rows are clicked based on the row type
(type) => this.setState({currently_selected_type : type})
}
/>
{SidePanelComponent}
</div>
);
}
在Table
组件内部,您将呈现不同类型的行,因此根据单击的行,只需将类型发送到传递的onClick
函数。
Table
渲染函数可以如下,例如:
render(){
return (
...
<tr onClick={this.props.onClick("A")}>Row Type A</tr>
<tr onClick={this.props.onClick("B")}>Row Type B</tr>
...
);
}
推荐阅读
- android - Is it possible to add an image as a class attribute?
- logic - How to use the rewrite command in coq for inner subexpressions?
- python - How can I access the created date from firebase token for a user?
- .net-core - Q# 程序不包含适用于入口点的静态“Main”方法
- c# - 为什么我的 Azure 函数在消耗计划上运行时没有扩展?
- ansible - 验证选定主机的 Ansible 提示
- javascript - 制作无法更改的本地存储
- java - 如何在 Akka runWith() 中创建方法并使用此方法
- r - 图上的 R Windrose 百分比标签
- java - 如何从 log4j 迁移到 log4j2 并在 Spring boot 中编辑 log4j 属性文件