Skip to content

Commit 60d06e3

Browse files
committed
加入SmartRefreshControl ClassicsHeader StoreHouseHeader组件
Signed-off-by: 2534290808 <2534290808@qq.com>
1 parent 6f16fb6 commit 60d06e3

29 files changed

+1250
-0
lines changed

.DS_Store

6 KB
Binary file not shown.

.idea/modules.xml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/react-native-SmartRefreshLayout.iml

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/workspace.xml

Lines changed: 286 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ClassicsHeader.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import React, {Component} from 'react';
2+
import {
3+
StyleSheet,
4+
View,
5+
Text,
6+
requireNativeComponent,
7+
ViewPropTypes,
8+
findNodeHandle,
9+
UIManager,
10+
} from 'react-native';
11+
import PropTypes from 'prop-types';
12+
13+
const RCTClassicsHeader = requireNativeComponent('RCTClassicsHeader', RCTClassicsHeader);
14+
15+
class ClassicsHeader extends Component {
16+
17+
render() {
18+
return (
19+
<RCTClassicsHeader
20+
ref="refreshLayout"
21+
{...this.props}
22+
/>
23+
24+
)
25+
}
26+
}
27+
28+
ClassicsHeader.propTypes = {
29+
primaryColor:PropTypes.string,
30+
accentColor:PropTypes.string,
31+
...ViewPropTypes,
32+
}
33+
export default ClassicsHeader;

MaterialHeader.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import React, {Component} from 'react';
2+
import {
3+
StyleSheet,
4+
View,
5+
Text,
6+
requireNativeComponent,
7+
ViewPropTypes,
8+
findNodeHandle,
9+
UIManager,
10+
} from 'react-native';
11+
import PropTypes from 'prop-types';
12+
13+
const RCTMaterialHeader = requireNativeComponent('RCTMaterialHeader', RCTMaterialHeader);
14+
15+
class MaterialHeader extends Component {
16+
17+
render() {
18+
return (
19+
<RCTMaterialHeader
20+
ref="refreshLayout"
21+
{...this.props}
22+
/>
23+
24+
)
25+
}
26+
}
27+
28+
MaterialHeader.propTypes = {
29+
...ViewPropTypes,
30+
}
31+
export default MaterialHeader;

SmartRefreshControl.js

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import React, {Component} from 'react';
2+
import {
3+
StyleSheet,
4+
View,
5+
Text,
6+
requireNativeComponent,
7+
ViewPropTypes,
8+
findNodeHandle,
9+
UIManager,
10+
} from 'react-native';
11+
import PropTypes from 'prop-types';
12+
import ClassicsHeader from "./ClassicsHeader";
13+
14+
const SmartRefreshLayout = requireNativeComponent('SmartRefreshLayout', SmartRefreshControl);
15+
16+
class SmartRefreshControl extends Component {
17+
18+
19+
/**
20+
* 参数格式为{delayed:number,success:bool}
21+
* delayed:延迟刷新
22+
* success:是否刷新成功
23+
* @param params
24+
*/
25+
finishRefresh=({delayed=-1,success=true}={delayed:-1,success:true})=>{
26+
this.dispatchCommand('finishRefresh',[delayed,success])
27+
}
28+
dispatchCommand=(commandName, params)=>{
29+
UIManager.dispatchViewManagerCommand(this.findNode(), UIManager.SmartRefreshLayout.Commands[commandName], params);
30+
}
31+
findNode=()=>{
32+
33+
return findNodeHandle(this.refs.refreshLayout);
34+
}
35+
renderHeader=()=>{
36+
const {HeaderComponent}=this.props;
37+
if(HeaderComponent){
38+
return HeaderComponent;
39+
}
40+
return <ClassicsHeader/>
41+
}
42+
//TODO://还未实现
43+
renderFooter=()=>{
44+
return null;
45+
}
46+
render() {
47+
return (
48+
<SmartRefreshLayout
49+
ref="refreshLayout"
50+
{...this.props}
51+
>
52+
{this.renderHeader()}
53+
{this.props.children}
54+
{this.renderFooter()}
55+
</SmartRefreshLayout>
56+
57+
)
58+
}
59+
}
60+
61+
SmartRefreshControl.propTypes = {
62+
onRefresh: PropTypes.func,
63+
onLoadMore: PropTypes.func,
64+
enableRefresh: PropTypes.bool,//是否启用下拉刷新功能
65+
HeaderComponent:PropTypes.object,
66+
...ViewPropTypes,
67+
}
68+
export default SmartRefreshControl;

StoreHouseHeader.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import React, {Component} from 'react';
2+
import {
3+
StyleSheet,
4+
View,
5+
Text,
6+
requireNativeComponent,
7+
ViewPropTypes,
8+
findNodeHandle,
9+
UIManager,
10+
} from 'react-native';
11+
import PropTypes from 'prop-types';
12+
13+
const RCTStoreHouseHeader = requireNativeComponent('RCTStoreHouseHeader', RCTStoreHouseHeader);
14+
15+
class StoreHouseHeader extends Component {
16+
17+
render() {
18+
return (
19+
<RCTStoreHouseHeader
20+
ref="refreshLayout"
21+
{...this.props}
22+
/>
23+
24+
)
25+
}
26+
}
27+
28+
StoreHouseHeader.propTypes = {
29+
textColor:PropTypes.string,
30+
text:PropTypes.string,//暂时只支持英文
31+
fontSize:PropTypes.number,
32+
lineWidth:PropTypes.number,
33+
dropHeight:PropTypes.number,
34+
...ViewPropTypes,
35+
}
36+
export default StoreHouseHeader;

android/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

0 commit comments

Comments
 (0)