【发布时间】:2021-07-12 13:40:47
【问题描述】:
我试图将 DOM 元素挂载到 div,但由于某种原因它不起作用,页面为空白。我正在使用 react、vs 代码和 antdesign 库。应用程序是使用 npm 创建的(创建反应应用程序)。带有工作示例的沙盒链接:https://codesandbox.io/s/scrolling-loaded-antd4151-forked-p6qmp?file=/index.html
这是我的代码:
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<title>React App</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<div id='test-container'/>
<script>var mountNode = document.getElementById('test-container');</script>
</body>
</html>
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import reportWebVitals from './reportWebVitals';
import './index.css';
ReactDOM.render(<App />, document.getElementById('root'));
reportWebVitals();
test.js
import React from 'react'
import InfiniteScroll from 'react';
import reqwest from 'reqwest';
import { List, message, Avatar, Spin } from 'antd';
import ReactDOM from 'react-dom';
import 'antd/dist/antd.css';
const fakeDataUrl = 'https://randomuser.me/api/?results=5&inc=name,gender,email,nat&noinfo';
class InfiniteListExample extends React.Component {
state = {
data: [],
loading: false,
hasMore: true,
};
componentDidMount() {
this.fetchData(res => {
this.setState({
data: res.results,
});
});
}
fetchData = callback => {
reqwest({
url: fakeDataUrl,
type: 'json',
method: 'get',
contentType: 'application/json',
success: res => {
callback(res);
},
});
};
handleInfiniteOnLoad = () => {
let { data } = this.state;
this.setState({
loading: true,
});
if (data.length > 14) {
message.warning('Infinite List loaded all');
this.setState({
hasMore: false,
loading: false,
});
return;
}
this.fetchData(res => {
data = data.concat(res.results);
this.setState({
data,
loading: false,
});
});
};
render() {
return (
<div className="demo-infinite-container">
<InfiniteScroll
initialLoad={false}
pageStart={0}
loadMore={this.handleInfiniteOnLoad}
hasMore={!this.state.loading && this.state.hasMore}
useWindow={false}
>
<List
dataSource={this.state.data}
renderItem={item => (
<List.Item key={item.id}>
<List.Item.Meta
avatar={
<Avatar src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" />
}
title={<a href="https://ant.design">{item.name.last}</a>}
description={item.email}
/>
<div>Content</div>
</List.Item>
)}
>
{this.state.loading && this.state.hasMore && (
<div className="demo-loading-container">
<Spin />
</div>
)}
</List>
</InfiniteScroll>
</div>
);
}
}
ReactDOM.render(<InfiniteListExample />, document.getElementById('test-container'));
app.js
import './App.css';
function App() {
return (
<div className="App">
</div>
);
}
export default App;
我做错了什么?感谢您的帮助
【问题讨论】:
-
这是正常的,因为你的App渲染是空白的,试着在你的
<div className="App">some text</div>里面放一些文字 -
但为什么没有加载无限列表示例?我安装在测试容器中的那个
-
因为你没有在你的主入口文件index.js中导入
标签: javascript html reactjs jsx ant-design-pro