【问题标题】:How to get value from another function inside react native flatList?如何从反应原生 flatList 中的另一个函数中获取价值?
【发布时间】:2021-02-13 03:37:29
【问题描述】:

我正在尝试过滤来自被阻止用户的帖子。处理它的最佳方法是什么?由于状态更新使应用程序滞后。这就是我接近它的方式:

我做了一个函数来检查用户是否被阻止

checkBlocked = async userId => {
  try {
  let snapshot = await firebase.database().ref('Blocked/' + firebase.auth().currentUser.uid).orderByChild('uid').equalTo(userId).once('value')
    return snapshot.exists();
  }
  catch(error) {
    return false;
  }
}

然后在平面列表中,我正在尝试过滤来自已阻止用户的帖子。

<FlatList
        inverted
        extraData={this.state.blocked}
        data={this.state.arrData}
        keyExtractor={item => item.key}
        renderItem={({ item }) => {
         
         
          this.checkBlocked(item.id).then(val => this.setState({blocked: val}));
         
            if(this.state.blocked == true){
              return (
                 //something )
            }

          else {
             
          return (

           //something 
             
     

       )}

      }}
     
      />

【问题讨论】:

    标签: javascript reactjs firebase react-native firebase-realtime-database


    【解决方案1】:

    您不能像这样从 render 方法启动异步操作(例如从 Firestore 加载数据)。你应该:

    1. 在渲染方法之外启动异步操作。
    2. 当您从该操作中获得结果时,将其置于组件的状态中。
    3. 这将触发组件的重新渲染,其中渲染方法可以从状态中获取数据。

    请在此处查看我的答案以获取示例:React Not Updating Render After SetState

    【讨论】:

    • 您好,感谢您的回答。我是这方面的新手,你能给我一些关于如何处理语法的指导吗?提前致谢。
    • 我对链接问题的回答提供了一个工作示例。
    猜你喜欢
    • 2020-08-10
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多