Javascript 如何从react native flatList中的另一个函数中获取值?

Javascript 如何从react native flatList中的另一个函数中获取值?,javascript,reactjs,firebase,react-native,firebase-realtime-database,Javascript,Reactjs,Firebase,React Native,Firebase Realtime Database,我正在尝试过滤被阻止用户的帖子。最好的方法是什么?由于状态更新使应用程序滞后。这就是我处理问题的方式: 我做了一个函数来检查用户是否被阻止 checkBlocked = async userId => { try { let snapshot = await firebase.database().ref('Blocked/' + firebase.auth().currentUser.uid).orderByChild('uid').equalTo(userId).once('v

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

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

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中,我试图过滤被阻止的用户的帖子

<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 
             
     

       )}

      }}
     
      />
item.key}
renderItem={({item})=>{
this.checkBlocked(item.id).then(val=>this.setState({blocked:val}));
if(this.state.blocked==true){
返回(
//(某物)
}
否则{
返回(
//某物
)}
}}
/>

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

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

  • 请参见我的答案,以获取示例:

    您好,谢谢您的回答。我是这方面的新手,你能给我一些关于语法的指导吗?提前感谢。我对链接问题的回答提供了一个工作示例。嘿@VaibhavDagar。链接中的示例有什么进展吗?如果我的答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就会知道你已经得到了(足够的)帮助。也请参见