React项目中如何为各组件修改对应表格的表头标题?
解决方案
解决这个问题只需通过组件层级传递表头前缀参数即可,具体步骤如下:
1. 给FilterableCourseTable中的CourseDisplay添加前缀属性
修改FilterableCourseTable.js,为两个CourseDisplay组件新增tableTitlePrefix属性,分别传入对应前缀:
<CourseDisplay name={this.state.name} credit={this.state.credits} courses={ this.state.writingCourses } saveCallback={ c => this.saveData("writingCourses", c) } deleteCallback={ c => this.deleteData("writingCourses", c) } tableTitlePrefix="Writing" // 新增前缀参数 /> <CourseDisplay name={this.state.name} credit={this.state.credits} courses={ this.state.speakingCourses } saveCallback={ c => this.saveData("speakingCourses", c) } deleteCallback={ c => this.deleteData("speakingCourses", c) } tableTitlePrefix="Speaking" // 新增前缀参数 />
2. 在CourseDisplay中传递前缀给CourseTable
假设你的CourseDisplay.js负责渲染CourseTable,需要把tableTitlePrefix传递给子组件CourseTable(根据你的实际组件结构调整):
// CourseDisplay.js示例代码 import React from 'react'; import { CourseTable } from './CourseTable'; class CourseDisplay extends React.Component { render() { return ( <div> <CourseTable name={this.props.name} credit={this.props.credit} courses={this.props.courses} editCallback={/* 保留原有回调逻辑 */} tableTitlePrefix={this.props.tableTitlePrefix} // 传递前缀参数 /> </div> ); } } export default CourseDisplay;
3. 在CourseTable中拼接表头文本
修改CourseTable.js,接收前缀参数并更新表头显示:
export class CourseTable extends Component { render() { const name = this.props.name; const credit = this.props.credit; const tableTitlePrefix = this.props.tableTitlePrefix; // 获取前缀参数 const courses = this.props.courses; // 其余原有代码保持不变 return ( <> <table className="table table-sm table-striped table-bordered"> <thead> <tr> <th colSpan="7" className="bg-primary text-white text-center h4 p-2"> {tableTitlePrefix} for {name} {/* 拼接前缀与原有文本 */} </th> </tr> {/* 其余表头行保持不变 */} </thead> <tbody>{rows}</tbody> </table> </> ); } }
修改完成后,两个表格的表头会分别显示Writing for {name}和Speaking for {name}。
内容的提问来源于stack exchange,提问作者brxdn
相关产品推荐
相关产品推荐

