#reactjs
Вопрос:
у меня есть большой выпадающий список(100-кратный ключевой элемент)…и в каждом раскрывающемся списке будет отображаться другая таблица(тип 100x),
так что мой код хотел бы:
const typeA =[
{
Header: "Gender",
accessor: "_source.aa",
className: "t-cell-1 text-left"
},
{
Header: "Age",
className: "t-cell-1 text-left",
accessor: "lastRecord.bb"
}
]
const typeA1 =[
{
Header: "Firstname",
accessor: "_source.firstname",
className: "t-cell-1 text-left"
},
{
Header: "Lastname",
className: "t-cell-1 text-left",
accessor: "lastRecord.lastname"
}
]
const typeA100 =[
{
Header: "Height",
accessor: "_source.height",
className: "t-cell-1 text-left"
},
{
Header: "Weight",
className: "t-cell-1 text-left",
accessor: "lastRecord.weight"
}
]
И в части рендеринга я делаю это так
return (
<Styles>
:isTypeA1? <Table columns={TypeA1} data={data} />
:isTypeA2? <Table columns={TypeA2} data={data} />
...
:isTypeA100? <Table columns={TypeA100} data={data} />
</Styles>
)
}
И я хотел бы спросить, есть ли какой-либо способ сократить строку кода, так как часть заголовка-это слишком много кода, и это очень похоже на то, как в целом .
Обновлено 20210813 компонент, который я использую сейчас, является флажком, и позже он изменится на выпадающий, в то время как код флажка такой:
constructor(props) {
super(props);
this.state = {
isTypeA1: false,
};
}
toggleCheck = () => {
this.setState({
isTypeA1: !this.state.isTypeA1,
});
}
<div>
<input
type="checkbox"
name="myCheckBox1"
checked={this.state.isTypeA1}
onClick={this.toggleCheck}
/>
testing chk box</div>
Спасибо
Джефф
Комментарии:
1. Откуда берется isTypeA1? typeA1 и т. Д. Должны быть ключами для объекта.
2. не могли бы вы отредактировать код, чтобы показать полный компонент? Нужно знать, откуда берутся isTypeA1 и все остальные
3. у меня есть фрагмент кода в редактировании, спасибо .
Ответ №1:
Лучший способ-это способ, который наиболее удобен для чтения, обслуживания и многократного использования, поэтому он отличается для каждого варианта использования и каждого проекта.
Один из распространенных шаблонов в вашем случае-сделать renderTable
или какое-либо другое имя, которое кажется подходящим, И сделать случай переключения, например:
const Home = ({ data, type }) => {
const renderTable= (item) => {
switch(type) {
case 'A1':
return <Table columns={TypeA1} data={data} />;
case 'A2':
return <Table columns={TypeA2} data={data} />;
default:
return null;
}
}
return (
<div className="container">
{renderTable()}
</div>
)
}
Но это будет просто вариант в зависимости от вашего варианта использования, так что не стесняйтесь редактировать то, что вы считаете лучшим.