1

我正在使用 react-native 制作自己的应用程序,我在做通知功能时遇到了一些困难。

我们有板子和评论,如果我们注意到有人写了评论,我想去平面列表评论中的评论(板子里可能有很多评论,所以如果我们只是去董事会而不关注通知评论,用户可能很难查找评论)。我在 flatlist 中搜索了一些滚动索引方法的示例。但我想直接去没有按钮或输入。我们在通知模型中有评论 ID。所以首先我认为,如果我们比较 flatlist 中的评论 ID 和设置状态,我们可以保存该评论的索引。但是 setState() 在 flatlist 中不起作用,因为错误“无法从不同组件的函数体内更新组件”。其次,我不知道我们将函数 scrollToIndex() 放在哪里,因为它可能会在渲染完成后移动。但我不知道那个状态。

如果您知道如何解决该问题,请帮助我!

(你可以认为instagram评论通知,如果我们点击它们,我们可以看到该评论,无论它们在哪里,因为它会自动移动到该评论

4

1 回答 1

0
  getItemLayout = (data, index) => (
    { length: 50, offset: 50 * index, index }
  )
  
  getColor(index) {
    const mod = index%3;
    return COLORS[mod];
  }
  
  scrollToIndex = () => {
    let randomIndex = Math.floor(Math.random(Date.now()) * this.props.data.length);
    this.flatListRef.scrollToIndex({animated: true, index: randomIndex});
  }

    <FlatList
      style={{ flex: 1 }}
      ref={(ref) => { this.flatListRef = ref; }}
      keyExtractor={item => item}
      getItemLayout={this.getItemLayout}
      initialScrollIndex={50}
      initialNumToRender={2}
      renderItem={({ item, index}) => (
          <View style={{...style, backgroundColor: this.getColor(index)}}>
            <Text>{item}</Text>
          </View>
        )}
      {...this.props}
    />

这是使用滚动索引的简单代码。它可以移动到随机索引项目但我想移动某些项目做切换屏幕。在通知屏幕中,如果我们点击通知,我们需要移动有该评论的板。然后我们滚动到评论以显示用户。我们在通知模型中有董事会 ID 和评论 ID。搬到董事会并不难。但是滚动到评论对我来说很难。有什么解决办法??请

于 2021-03-23T07:23:41.230 回答