javascript - 在 React 中为多个条件提供更多条件渲染?
问题描述
我正在尝试为当前已经设置了条件的两个组件设置额外的条件渲染:
{!this.state.isEdit &&
<Todo
onCompleted={this.handleCompleted}
todos={this.state.todos}
onEdit={this.handleEdit}
onDelete={this.handleDelete}
/>
}
{this.state.isEdit &&
<Useredit
onCompleted={this.handleCompleted}
onEdit={this.handleEdit}
value={this.state.editText}
onChange={this.handleEditChange}
onChangeSelect={this.handleSelectChange}
todos={this.state.todos}
onDelete={this.handleDelete}
onSave={this.handleSave}
/>
}
如何在保留我设置的原始条件的同时为这两个组件添加另一个条件以获得不同且不相关的条件?谢谢你。
解决方案
{!this.state.isEdit && (someSecondCondition) &&
<Todo
onCompleted={this.handleCompleted}
todos={this.state.todos}
onEdit={this.handleEdit}
onDelete={this.handleDelete}
/>
}
{this.state.isEdit && (someWeirdCondition || someOtherWeirdCondition) &&
<Useredit
onCompleted={this.handleCompleted}
onEdit={this.handleEdit}
value={this.state.editText}
onChange={this.handleEditChange}
onChangeSelect={this.handleSelectChange}
todos={this.state.todos}
onDelete={this.handleDelete}
onSave={this.handleSave}
/>
}
只需更换someSecondCondition
等以适合您的情况。有关更多信息,您应该了解&&
和||
操作符如何工作,以及在真假的情况下,将呈现代码的哪一部分。
更好的是,为了提高可扩展性/可读性/可维护性,将您的逻辑删除到另一种方法中。
handleViews = () => {
if(!this.state.isEdit) {
return (
<Todo
onCompleted={this.handleCompleted}
todos={this.state.todos}
onEdit={this.handleEdit}
onDelete={this.handleDelete}
/>
)
} else if(this.state.isEdit) {
return (
<Useredit
onCompleted={this.handleCompleted}
onEdit={this.handleEdit}
value={this.state.editText}
onChange={this.handleEditChange}
onChangeSelect={this.handleSelectChange}
todos={this.state.todos}
onDelete={this.handleDelete}
onSave={this.handleSave}
/>
);
}
}
render() {
return <View>{this.handleViews()}</View>
}
推荐阅读
- json - 由于类型转换错误,无法对 JSON 数组进行分组
- dart - 使用字符串键和列表将 JSON 转换为映射
价值观 - python - 尝试合并文件夹中的所有文本文件并附加文件
- mongodb - Helm Kubernetes MongoDB 身份验证
- ios - 与文件应用程序共享应用程序文档中的特定目录
- c# - process.StandardOutput 仅检索部分数据
- list - 将 where 方法与 List 一起使用
- azure - Azure 上的 Terraform 公共 IP 输出
- firebase - 使用 Firebase Auth 通过 gapi SDK 访问 google API 时遇到问题
- python - AWS Sagemaker,InvokeEndpoint 操作,模型错误:“使用序列设置数组元素。”