如何在选择或单击列表中的单个项目时更新 FlatList 中所有项目的 UI 设计

维伦德拉辛比什特

如何在选择或单击列表中的单个项目时更新 FlatList 中所有项目的 UI 设计。我已经尝试了可能的结果我也可以想到 flatlist 属性 extradata 仅在数据发生更改时才有效,否则它不起作用,还将值从子组件传递给父组件并更改 flatlist 的属性之一以重新呈现

这是我在从子组件回调时更改数据数组的代码:

export default class CombinedScreenList extends React.Component {
constructor(props) {
    super(props);

    this.state = {
      loading: false,
      data: [],
      page: 1,
      seed: 1,
      error: null,
      refreshing: false,
      isLongPress: false,
      ref: false,
      index: 1
    };
  }
callBackFuncForChild = (passData) =>{ 

    this.setState({isLongPress: passData});
    this.setState({data: []});
    this.makeRequest();

}
async makeRequest(){
    this.makeRemoteRequest();
  }
  async componentWillMount(){
    this.makeRemoteRequest();
  }
  makeRemoteRequest = () => {
    const { page, seed } = this.state;
    const url = `https://randomuser.me/api/?seed=${seed}&page=${page}&results=2`;
    this.setState({ loading: true });

    fetch(url)
      .then(res => res.json())
      .then(res => {
        this.setState({
          data: page === 1 ? res.results : [...this.state.data, ...res.results],
          error: res.error || null,
          loading: false,
          refreshing: false
        });
        //jsonResponseData = JSON.stringify(res.results);
      })
      .catch(error => {
        this.setState({ error, loading: false });
      });
  };
  render() {
    return (
      // <View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
      //   <Text>{this.props.data}</Text>
      // </View>
      <View style={{flex: 1}}>
       <FlatList
          data={this.state.data}
          extraData={this.state.refreshing}
          renderItem={({ item }) => (
               <ExpensesTileHeader content = {item} longPressParentFunc = {this.callBackFuncForChild} 
               isSelection = {this.state.isLongPress}/>
          )
          }
        />
        </View>
    );
  }
}
哈里斯·詹格拉

正如react-native flatlist文档所示

额外数据

一个标记属性,用于告诉列表重新呈现(因为它实现了 PureComponent)。如果您的 renderItem、Header、Footer 等函数中的任何一个依赖于 data prop 之外的任何内容,请将其粘贴在这里并一成不变地对待它。

您可以在 flatlist 中添加 extraData 字段作为道具

<FlatList
  extraData={this.state}
/>

和 onselection setisLongPress to true在重新渲染 flatlist 之后触发状态变化,在 renderItem 中根据this.state.isLongPress切换 ui 样式

并在回调函数中将您的状态更新为一个函数

this.setState({
 isLongPress: passData,
 data:[]
})

希望它能解决你的问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

选择至少匹配列表中所有项目的记录

来自分类Dev

如何更新FlatList项目的属性?

来自分类Dev

带有BeautifulSoup的queryset中所有项目的列表

来自分类Dev

如何测试容器中所有项目的价值?

来自分类Dev

MongoDB:引用集合中所有项目的总和

来自分类Dev

WPF:同步ItemsControl中所有项目的宽度

来自分类Dev

for循环kotlin android中所有项目的总和

来自分类Dev

动态更改ListView中所有项目的文本颜色

来自分类Dev

获取数据表中所有项目的ID

来自分类Dev

如何有效获取列表中所有项目的索引中的序数位置

来自分类Dev

AngularJS材质中所选项目的ui样式

来自分类Dev

是否有Android UI设计的“最佳做法”列表?

来自分类Dev

Sharepoint 设计器不会在工作流中显示当前项目的所有字段

来自分类Dev

具有多种表示形式的项目的C ++设计模式

来自分类Dev

在没有MFC的Visual Studio中拖放UI设计器?

来自分类Dev

VS 2017 中没有 XAML UI 设计工具?

来自分类Dev

django select2插件中所有选定项目的列表

来自分类Dev

JPQL-JPA实体的集合成员中所有项目的列表

来自分类Dev

C# 查找列表框中所有项目的选中状态

来自分类Dev

解决方案中所有项目的nuget更新脚本

来自分类Dev

如何从 FlatList 中的存储中删除项目?

来自分类常见问题

如何以DRY方式过滤/禁用SBT中所有子项目的scalac选项

来自分类Dev

如何更改i3 WM状态栏中所有项目的颜色?

来自分类Dev

如何以DRY方式过滤/禁用SBT中所有子项目的scalac选项

来自分类Dev

如何更改Visual Studio中所有项目的默认语言标准。C ++

来自分类Dev

如何进行比较字段和数组中所有项目的查询

来自分类Dev

如何更改i3 WM状态栏中所有项目的颜色?

来自分类Dev

在Vue.js中,更改数据数组中所有项目的特定属性的值

来自分类Dev

Yii2中所有项目的默认main.php配置文件

Related 相关文章

  1. 1

    选择至少匹配列表中所有项目的记录

  2. 2

    如何更新FlatList项目的属性?

  3. 3

    带有BeautifulSoup的queryset中所有项目的列表

  4. 4

    如何测试容器中所有项目的价值?

  5. 5

    MongoDB:引用集合中所有项目的总和

  6. 6

    WPF:同步ItemsControl中所有项目的宽度

  7. 7

    for循环kotlin android中所有项目的总和

  8. 8

    动态更改ListView中所有项目的文本颜色

  9. 9

    获取数据表中所有项目的ID

  10. 10

    如何有效获取列表中所有项目的索引中的序数位置

  11. 11

    AngularJS材质中所选项目的ui样式

  12. 12

    是否有Android UI设计的“最佳做法”列表?

  13. 13

    Sharepoint 设计器不会在工作流中显示当前项目的所有字段

  14. 14

    具有多种表示形式的项目的C ++设计模式

  15. 15

    在没有MFC的Visual Studio中拖放UI设计器?

  16. 16

    VS 2017 中没有 XAML UI 设计工具?

  17. 17

    django select2插件中所有选定项目的列表

  18. 18

    JPQL-JPA实体的集合成员中所有项目的列表

  19. 19

    C# 查找列表框中所有项目的选中状态

  20. 20

    解决方案中所有项目的nuget更新脚本

  21. 21

    如何从 FlatList 中的存储中删除项目?

  22. 22

    如何以DRY方式过滤/禁用SBT中所有子项目的scalac选项

  23. 23

    如何更改i3 WM状态栏中所有项目的颜色?

  24. 24

    如何以DRY方式过滤/禁用SBT中所有子项目的scalac选项

  25. 25

    如何更改Visual Studio中所有项目的默认语言标准。C ++

  26. 26

    如何进行比较字段和数组中所有项目的查询

  27. 27

    如何更改i3 WM状态栏中所有项目的颜色?

  28. 28

    在Vue.js中,更改数据数组中所有项目的特定属性的值

  29. 29

    Yii2中所有项目的默认main.php配置文件

热门标签

归档