Initial commit: 教务系统在线平台
- 包含4个产业方向的前端项目:智能开发、智能制造、大健康、财经商贸 - 已清理node_modules、.yoyo等大文件,项目大小从2.6GB优化至631MB - 配置完善的.gitignore文件 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
100
frontend_大健康/test-arco-collapse.html
Normal file
100
frontend_大健康/test-arco-collapse.html
Normal file
@@ -0,0 +1,100 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test Arco Collapse Behavior</title>
|
||||
<link rel="stylesheet" href="https://unpkg.com/@arco-design/web-react@2.66.5/dist/css/arco.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
||||
<script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
|
||||
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
|
||||
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
|
||||
<script src="https://unpkg.com/@arco-design/web-react@2.66.5/dist/arco.min.js"></script>
|
||||
|
||||
<script type="text/babel">
|
||||
const { useState } = React;
|
||||
const { Collapse, Button, Space } = arco;
|
||||
const CollapseItem = Collapse.Item;
|
||||
|
||||
function App() {
|
||||
// 测试受控模式
|
||||
const [controlledKeys, setControlledKeys] = useState([]);
|
||||
|
||||
const handleControlledChange = (keys, extra, type) => {
|
||||
console.log('=== Controlled Mode ===');
|
||||
console.log('onChange keys:', keys);
|
||||
console.log('keys type:', typeof keys);
|
||||
console.log('Is Array:', Array.isArray(keys));
|
||||
console.log('extra:', extra);
|
||||
console.log('type:', type);
|
||||
setControlledKeys(keys);
|
||||
};
|
||||
|
||||
const programmaticallyOpen = (key) => {
|
||||
setControlledKeys(prev => {
|
||||
if (!prev.includes(key)) {
|
||||
console.log('Programmatically opening:', key);
|
||||
return [...prev, key];
|
||||
}
|
||||
return prev;
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<h2>Controlled Mode Test</h2>
|
||||
<p>Active Keys: {JSON.stringify(controlledKeys)}</p>
|
||||
|
||||
<Space style={{ marginBottom: 20 }}>
|
||||
<Button onClick={() => programmaticallyOpen('1')}>Open Unit 1</Button>
|
||||
<Button onClick={() => programmaticallyOpen('2')}>Open Unit 2</Button>
|
||||
<Button onClick={() => programmaticallyOpen('vertical-1')}>Open Vertical 1</Button>
|
||||
<Button onClick={() => setControlledKeys([])}>Close All</Button>
|
||||
<Button onClick={() => setControlledKeys(['1', '2', 'vertical-1'])}>Open All</Button>
|
||||
</Space>
|
||||
|
||||
<Collapse
|
||||
activeKey={controlledKeys}
|
||||
onChange={handleControlledChange}
|
||||
expandIconPosition="right"
|
||||
>
|
||||
<CollapseItem header="复合能力课 - 单元 1" name="1">
|
||||
<div>课程内容 1</div>
|
||||
</CollapseItem>
|
||||
<CollapseItem header="复合能力课 - 单元 2" name="2">
|
||||
<div>课程内容 2</div>
|
||||
</CollapseItem>
|
||||
<CollapseItem header="垂直能力课 - 单元 1" name="vertical-1">
|
||||
<div>垂直课程内容</div>
|
||||
</CollapseItem>
|
||||
</Collapse>
|
||||
|
||||
<hr style={{ margin: '40px 0' }} />
|
||||
|
||||
<h2>Uncontrolled Mode Test (for comparison)</h2>
|
||||
<Collapse
|
||||
defaultActiveKey={['1']}
|
||||
onChange={(keys) => {
|
||||
console.log('=== Uncontrolled Mode ===');
|
||||
console.log('onChange keys:', keys);
|
||||
console.log('keys type:', typeof keys);
|
||||
console.log('Is Array:', Array.isArray(keys));
|
||||
}}
|
||||
expandIconPosition="right"
|
||||
>
|
||||
<CollapseItem header="Uncontrolled - Panel 1" name="u1">
|
||||
<div>Content 1</div>
|
||||
</CollapseItem>
|
||||
<CollapseItem header="Uncontrolled - Panel 2" name="u2">
|
||||
<div>Content 2</div>
|
||||
</CollapseItem>
|
||||
</Collapse>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
ReactDOM.render(<App />, document.getElementById('root'));
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user