标签: react-native-flatlist

如何在flatlist中应用延迟加载

什么是在反应原生中在Flatlist中应用延迟加载的最佳方法.目前在平面列表中有无限滚动.我是React原生的新手,所以我什么都不知道.

javascript lazy-loading reactjs react-native react-native-flatlist

11
推荐指数
1
解决办法
1万
查看次数

React-Native:FlatList onRefresh没有调用pull up.

目前的行为:

我试图通过拉起视图来更新从服务器获取的列表.当我这样做onRefresh不会开火.

我已经在setState函数的回调中设置了GET请求,但这似乎没有做任何事情.

预期行为:

拉起视图调用onRefresh函数.

码:

...
  constructor(props) {
    super(props);
    this.state = {
      stories: [],
      isFetching: false,
    };
  }
  componentDidMount() { this.fetchData() }
  onRefresh() {
    this.setState({ isFetching: true }, function() { this.fetchData() });
  }
  fetchData() {
    var that = this;
    axios.get('http://192.168.0.13:3000/api/story/get/by/geo')
      .then((res) => {
        that.setState({ stories: res.data, isFetching: false });
        that.props.dispatch(StoryActions.setStories(res.data))
      })
  }
  render() {
    return (
      <ScrollView>
        <FlatList
          onRefresh={() => this.onRefresh()}
          refreshing={this.state.isFetching}
          data={this.state.stories}
          keyExtractor={(item, index) => item.id}
          renderItem={({item}) => (<StoryFeed story={item} id={item.id} /> )}
          />
      </ScrollView>
    )
  }
Run Code Online (Sandbox Code Playgroud)

版本信息 …

react-native react-native-flatlist

10
推荐指数
3
解决办法
8727
查看次数

React FlatList renderItem

我以前在JS中看到过这种语法,我只是好奇它是如何工作的.在FlatList的React Native Docs中,一个示例调用renderItem.this._renderItem如何知道它正在使用哪个单独的列表项?看起来项目正在被破坏,但是从哪个对象?来自React Native Docs的示例

换句话说:在Flatlist中,进行同样调用的另一种方法可能是:

<FlatList <other props> renderItem={({item}) => (<MyListItem ....) />
Run Code Online (Sandbox Code Playgroud)

renderItem是一些特殊的道具,{item}将永远是destructured arg?

javascript reactjs react-native react-native-flatlist

10
推荐指数
1
解决办法
2万
查看次数

ReactNative FlatList一次渲染所有项目?

我正在使用ReactNative的新List组件 - FlatList.

即使单元格在屏幕上实际不可见,FlatList似乎也会立即呈现所有项目.

<FlatList data={this.props.items} 
          keyExtractor={(item, index) => generateKey()}
         renderItem={this.renderStrip}/>

 renderItem = ({item}) => { 
   console.warn('rendered!');
   return <View style={{height:200, height: 100}} />
}
Run Code Online (Sandbox Code Playgroud)

根据项目的总数调用设置30个项目并且似乎"呈现"警告.

我认为FlatList类似于Android中RecycleView的工作方式,只有当它在屏幕上可见时才会呈现项目.

我错过了什么吗?它不会降低性能吗?
我希望它只能在它即将展示时呈现一个项目.

react-native react-native-flatlist

10
推荐指数
1
解决办法
7787
查看次数

ReactNative Flatlist - RenderItem无法正常工作

所以我试图使用React Native的FlatList renderItem属性,但是发生了一些非常奇怪的事情.

data属性设置为一个数组,其中包含未定义的元素,但是,在renderItem函数中,它给出了一个错误,指出函数的参数是未定义的,除非我调用参数item.

这是我的代码:

export default class Profile extends React.Component {
    onLearnMore = (user) => {
        this.props.navigation.navigate('UserDetail', user)
    }

    render() {
        return (
            <List>
                <FlatList
                    data={data.users}
                    renderItem={( {item} ) => {
                        console.log(item)
                        return (<ListItem
                            roundAvatar
                            title={`${item.fName} ${item.lName}`}
                            onPress={() => this.onLearnMore(item)}
                        />)
                    }}
                />
            </List>
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我换{item}{userData},那么userData以后在函数中将是未定义的.有谁知道为什么会这样?

javascript undefined react-native react-native-flatlist

10
推荐指数
2
解决办法
8704
查看次数

不变违规:VirtualizedList包含一个本身包含多个VirtualizedList的单元格

完整的错误是:

FlatList

我的每一个keyExtractor组件都有一个List道具.react-native-elementsfrom FlatList组件中的每个项目都有一个关键道具.

任何人都可以解释这个问题的意义吗?

react-native react-native-flatlist

10
推荐指数
3
解决办法
3762
查看次数

在FlatList中未正确显示页脚和搜索栏

我有这组组件:

render() {
        return (
            <InstantSearch
                appId="29FLVJV5X9"
                apiKey="f2534ea79a28d8469f4e81d546297d39"
                indexName="prod_conferences"
                style={{ flexGrow: 1 }}>
                <Configure filters={`startDateUnix>${TODAY}`} hitsPerPage={10} />
                <SearchBox />
                <LoadingIndicator />
                <Conferences/>
            </InstantSearch>)
    }
Run Code Online (Sandbox Code Playgroud)

哪里<InstantSearch>很简单<View>

我的会议:

export default connectInfiniteHits(({ hits, hasMore, refine }) => {

  const LoadMoreFooter = connectStateResults(
    ({ searching }) =>
      !searching ? <View style={s.loadMoreButtonContainer}>
        <Divider style={s.loadMoreButtonDivider} />
        <Button transparent color={'#53acfe'} title={'Load more confs...'} onPress={() => refine()} />
      </View> : null
  );

  return (
    <FlatList
      data={hits}
      keyExtractor={(item, index) => item.objectID}
      ListFooterComponent={<LoadMoreFooter />}
      renderItem={({ item }) …
Run Code Online (Sandbox Code Playgroud)

css css3 flexbox react-native react-native-flatlist

10
推荐指数
1
解决办法
403
查看次数

添加新项目时防止 FlatList 滚动

FlatList在我的聊天应用程序中垂直倒置,它在底部显示最新消息,在顶部显示最旧消息(就像所有其他聊天应用程序一样)
问题是当我想将新消息添加到列表底部时,FlatList自动跳转到底部列表!
我所需要的只是防止在这种情况下滚动

这是我的FlatList

<FlatList
  inverted
  style={{flex: 1}}
  data={this.state.data}
  keyExtractor={(item, index) => item.id}
  renderItem={this.renderItem}
/>
Run Code Online (Sandbox Code Playgroud)

这是将最新消息添加到列表的代码

const data = [ ...newMessages, ...this.state.data ];
this.setState({ data });
Run Code Online (Sandbox Code Playgroud)

react-native react-native-scrollview react-native-flatlist

10
推荐指数
1
解决办法
2560
查看次数

如何将KeyboardAvoidingView与FlatList一起使用?

我有一个FlatList组件,每行内部都有一个Input.当我选择输入时,我希望它向上滚动键盘上方.

我的代码:

return (
    <KeyboardAvoidingView behavior='padding' style={{ flex: 1 }} >
    <FlatList
      style={{ flex: 1, backgroundColor: '#fff' }}
      data={ds}
      renderItem={({ item }) => <ListItem data={item} />}
      ListFooterComponent={this.renderButton}
    />
  </KeyboardAvoidingView>
);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,从不加载FlatList.当我flex:1从两个组件中删除时,FlatList正确呈现,但选择一个输入不会使其向上滚动

ios react-native react-native-flatlist

9
推荐指数
3
解决办法
5178
查看次数

ScrollView中带有FlatList的选项卡-如Instagram或Twitter个人资料页面

我希望有一组选项卡,每个选项卡都有FlatList一个ScrollView。这类似于Instagram或Twitter的布局。

我知道,由于仅注册了滚动事件,所以在a FlatList内部有一个问题ScrollView并触发onEndReached 存在一些问题ScrollView

这导致内部onEndReached在加载时立即被调用,然后又一次又一次地被调用...

如果将ScrollView scrollEnabled设置为false flex: 1flexGrow: 1则可以使内部FlatList滚动,但不使外部内容滚动……如下所示:

在此处输入图片说明

我认为很多人都在为这个问题而苦苦挣扎,我在任何地方都找不到真正明确的解决方案。

我也试图实现react-navigation-collapsiblecreateMaterialTopTabNavigator创建标签。但是,您不能在整个屏幕上实现“拉动刷新”吗?

任何帮助将非常感激。

更新资料

我也研究了实现:ScrollView中的FlatList不滚动

并且我研究了动态切换scrollEnabled属性(即使它创建了一个重新渲染。此ALMOST可以工作...但是ScrollView高度存在问题,flexGrow: 1并且内部FlatList没有填充空间...

第二次更新

这种零食几乎可以做正确的事... https://snack.expo.io/@satya164/collapsible-header-with-tabviewreact-native-tab-view使用动画折叠标题。如果标头是组件,则它可以在加载时获取数据,但内部列表上将仅具有拉动刷新功能(与Instagram不同)。

相关问题:

onEndReached被无限调用存在一个问题-https: //github.com/facebook/react-native/issues/18887-https : //github.com/facebook/react-native/issues/6002

FlatList无法在ScrollView内部正常工作...- https://github.com/facebook/react-native/issues/12827#issuecomment-320509824

ScrollView内部的平面列表-https: //github.com/facebook/react-native/issues/19971

ScrollView中的FlatList无法滚动-https: //github.com/facebook/react-native/issues/19971

FlatList子对象正在渲染上调用onEndReached- https://github.com/react-native-community/react-native-tab-view/issues/501

React Native嵌套Listview多次触发onEndReached- React Native嵌套ListView多次触发onEndReached

当FlatList包装在ScollView中时,onEndReached无法正常工作。- https://github.com/facebook/react-native/issues/22008

类似Twitter的个人资料布局- 如何创建类似Twitter的个人资料布局?但是我相信答案现在是不正确的。

scrollview reactjs react-native react-native-flatlist

9
推荐指数
1
解决办法
990
查看次数