我正在尝试实现显示更多/显示更少。到目前为止,我已经能够调出一个 ItemViewer 组件,在其中显示项目列表。对于每个部分,将有显示更多/显示更少链接。当项目数大于 3 时,显示更多应该可见,并且应该能够切换(显示更多/显示更少)。当项目数少于 3 时,不显示链接。此外,当没有数据时显示“未找到数据”。
我想出了一个沙箱:https : //codesandbox.io/s/pensive-kirch-1fgq3
有人可以在这里帮助我吗?
import React from "react";
import ReactDOM from "react-dom";
import ItemViewer from "./Item";
const item1 = ["i1d1", "i2d2", "i3d3"];
const item2 = ["i2d1", "i2d2", "i2d3", "i2d4"];
const item3 = ["i3d1", "i3d2", "i3d3", "i3d4", "i3d5"];
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
item1: [],
item2: [],
item3: []
};
}
componentDidMount() {
this.setState({
item1,
item2,
item3
});
}
render() {
let { item1, item2, item3 } = this.state;
return (
<>
<ItemViewer index="1" item="item1" itemData={item1} />
<ItemViewer index="2" item="item2" itemData={item2} />
<ItemViewer index="3" item="item3" itemData={item3} />
</>
);
}
}
import React, { useState } from "react";
const ItemViewer = props => {
function renderItems(list, itemType) {
if (list && list.length > 0) {
return (
<>
<ul>
{list.map(function(item) {
return <li key={item}>{item}</li>;
})}
</ul>
</>
);
} else {
return <p>No Items Found</p>;
}
}
return (
<div>
<span>
{props.index}: {props.item}
</span>
<div>
<a href="#">Show more</a>
</div>
<div>
<a href="#">Show Less</a>
</div>
<div>{renderItems(props.itemData, props.item, props.itemDetailData)}</div>
</div>
);
};
export default ItemViewer;