滑动浏览具有大数据集的组件(React)
Swipe through components with big data sets (React)
我正在构建一个 React 应用程序,该应用程序从多个不同位置的温度传感器获取大量数据并使用 chart.js 显示数据。
我制作了一个从一个地方获取数据的组件,该组件是从 App.js 调用的,所以现在我可以复制这个组件/或从另一个地方获取数据,如果我以这种方式实现的话。
下一步是找到一种方法来浏览这些组件。我不知道该用什么或者我将如何解决这个问题,所以我正在寻找解决这个问题的想法。
我试过使用 react-swipeable-views。 post 中提供了代码。这似乎是一个简单的解决方案,但我不确定这样做是否是个好主意。我想这对大数据集来说会很重吗?如果我理解 React 的工作方式,它会从所有组件中提取数据到浏览器,然后隐藏它直到显示出来?
我也看过这篇文章:https://coursework.vschool.io/react-transitions-with-react-transition-group/
这里使用了react-transition-group,但是我不确定这里如何实现滑动部分,因为本文没有讨论。
关于如何解决这个问题有什么想法吗?
import React, {Component} from 'react';
import Test from './Test';
import SwipeableViews from 'react-swipeable-views';
const styles = {
slide: {
padding: 15,
minHeight: 800,
color: '#fff',
},
slide1: {
background: '#FEA900',
},
slide2: {
background: '#B3DC4A',
},
slide3: {
background: '#6AC0FF',
},
};
class App extends React.Component{
constructor(){
super();
this.state={
foo: 'bar'
}
}
}
render(){
return(
<div className="App">
<SwipeableViews enableMouseEvents>
<div style={Object.assign({}, styles.slide, styles.slide1)}>
slide n°1
<Test /> // <-- This would be a component with large data sets
</div>
<div style={Object.assign({}, styles.slide, styles.slide2)}>
slide n°2
</div>
<div style={Object.assign({}, styles.slide, styles.slide3)}>
slide n°3
</div>
</SwipeableViews>
</div>
)
}
export default App;
我以前没有用过它,但是查看文档,使用 react-swipeable-views 应该没问题,因为它 "quickly renders the first slide, then lazy-loads the others."(来自 https://github.com/oliviertassinari/react-swipeable-views). Furthermore you can customize how many slides before and after the currently displayed one are being rendered (see https://react-swipeable-views.com/api/api/#virtualize)。
此外,了解一些 React 概念可能是个好主意 (https://reactjs.org/docs/introducing-jsx.html)。 React 不会 "hide" 任何组件,它只会将您选择的组件呈现给 DOM 并更新获取 DOM 所需的内容以反映您的状态。因此,例如,如果您有多个页面(p1、p2、p3),每个页面渲染一个组件(c1、c2、c3),而在页面 p1 上时,只有组件 c1 会渲染到 DOM。
我正在构建一个 React 应用程序,该应用程序从多个不同位置的温度传感器获取大量数据并使用 chart.js 显示数据。
我制作了一个从一个地方获取数据的组件,该组件是从 App.js 调用的,所以现在我可以复制这个组件/或从另一个地方获取数据,如果我以这种方式实现的话。
下一步是找到一种方法来浏览这些组件。我不知道该用什么或者我将如何解决这个问题,所以我正在寻找解决这个问题的想法。
我试过使用 react-swipeable-views。 post 中提供了代码。这似乎是一个简单的解决方案,但我不确定这样做是否是个好主意。我想这对大数据集来说会很重吗?如果我理解 React 的工作方式,它会从所有组件中提取数据到浏览器,然后隐藏它直到显示出来?
我也看过这篇文章:https://coursework.vschool.io/react-transitions-with-react-transition-group/ 这里使用了react-transition-group,但是我不确定这里如何实现滑动部分,因为本文没有讨论。
关于如何解决这个问题有什么想法吗?
import React, {Component} from 'react';
import Test from './Test';
import SwipeableViews from 'react-swipeable-views';
const styles = {
slide: {
padding: 15,
minHeight: 800,
color: '#fff',
},
slide1: {
background: '#FEA900',
},
slide2: {
background: '#B3DC4A',
},
slide3: {
background: '#6AC0FF',
},
};
class App extends React.Component{
constructor(){
super();
this.state={
foo: 'bar'
}
}
}
render(){
return(
<div className="App">
<SwipeableViews enableMouseEvents>
<div style={Object.assign({}, styles.slide, styles.slide1)}>
slide n°1
<Test /> // <-- This would be a component with large data sets
</div>
<div style={Object.assign({}, styles.slide, styles.slide2)}>
slide n°2
</div>
<div style={Object.assign({}, styles.slide, styles.slide3)}>
slide n°3
</div>
</SwipeableViews>
</div>
)
}
export default App;
我以前没有用过它,但是查看文档,使用 react-swipeable-views 应该没问题,因为它 "quickly renders the first slide, then lazy-loads the others."(来自 https://github.com/oliviertassinari/react-swipeable-views). Furthermore you can customize how many slides before and after the currently displayed one are being rendered (see https://react-swipeable-views.com/api/api/#virtualize)。
此外,了解一些 React 概念可能是个好主意 (https://reactjs.org/docs/introducing-jsx.html)。 React 不会 "hide" 任何组件,它只会将您选择的组件呈现给 DOM 并更新获取 DOM 所需的内容以反映您的状态。因此,例如,如果您有多个页面(p1、p2、p3),每个页面渲染一个组件(c1、c2、c3),而在页面 p1 上时,只有组件 c1 会渲染到 DOM。