1.10.0 • Published 1 year ago

@x.render/render-waterfall v1.10.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@x.render/render-waterfall

英文文档

描述

用于实现瀑布流的列表容器

使用

$ npm install @x.render/render-waterfall --save
import View from "@x.render/render-view";
import Text from "@x.render/render-text";
import Waterfall from "@x.render/render-waterfall";
import { useState } from "react";

let data = [
  { height: 550, item: {} },
  { height: 624, item: {} },
  { height: 708, item: {} },
  { height: 600, item: {} },
  { height: 300, item: {} },
  { height: 100, item: {} },
  { height: 400, item: {} },
  { height: 550, item: {} },
  { height: 624, item: {} },
  { height: 708, item: {} },
  { height: 600, item: {} },
  { height: 300, item: {} },
  { height: 100, item: {} },
  { height: 400, item: {} },
];

const App = () => {
  const [dataSource, setDataSoruce] = useState(data);

  const loadMore = () => {
    setTimeout(() => {
      setDataSoruce(dataSource.concat(dataSource));
    }, 1000);
  };

  return (
    <View
      style={{ position: "absolute", top: 0, bottom: 0, left: 0, right: 0 }}
    >
      <View>first module</View>
      <Waterfall
        columnWidth={150}
        columnCount={4}
        columnGap={50}
        dataSource={dataSource}
        renderHeader={() => {
          return [
            <View
              key="1"
              style={{
                width: 750,
                height: 100,
                backgroundColor: "yellow",
                marginBottom: 20,
              }}
            >
              header1
            </View>,
            <View
              key="2"
              style={{
                width: 750,
                height: 100,
                backgroundColor: "green",
                marginBottom: 20,
              }}
            >
              header2
            </View>,
          ];
        }}
        renderFooter={() => {
          return (
            <View
              key="3"
              style={{
                width: 750,
                height: 300,
                backgroundColor: "blue",
                marginTop: 20,
              }}
            >
              footer1
            </View>
          );
        }}
        renderItem={(item, index) => {
          return (
            <View
              key={index}
              style={{
                height: item.height,
                backgroundColor: "red",
                marginBottom: 20,
              }}
            >
              <Text>{index}</Text>
              {/* {index} */}
            </View>
          );
        }}
        onEndReached={loadMore}
      />
    </View>
  );
};

export default App;

属性

属性类型默认值必填描述
dataSourcearray-true瀑布流数组,需要传入模块高度
renderItemfunction-true渲染每项的模板
renderHeaderfunction-false渲染 header 部分
renderFooterfunction-false渲染 footer 部分
columnWidthnumber750false列宽
columnCountnumber1false列数
columnGapnumber0false列间距
onEndReachedThresholdnumber500false设置加载更多的偏移
onEndReachedfunction-false滚动区域还剩onEndReachedThreshold的长度时触发
leftGapnumber0false距离左边的间隙
rightGapnumber0false距离右边的间隙

方法

scrollTo({x: number,y: number, animated?: boolean, duration?: number})

参数

参数为 object,包含以下属性

属性类型默认值必填描述
xnumber-横向的偏移量
ynumber-纵向的偏移量
animatedbooleantrue在设置滚动条位置时使用动画过渡
durationnumber400animated 设置为 true 时,可以设置 duration 来控制动画的执行时间,单位 ms
1.9.0

1 year ago

1.10.0

1 year ago

1.8.0

1 year ago

1.7.2

1 year ago

1.2.0

1 year ago

1.3.0

1 year ago

1.1.0

1 year ago

1.0.7

1 year ago