0

我不确定我想做的事情是否可行。我想创建一个过滤器,所以我想我会用嵌套平面列表来做(第一个 FL 是标题,然后第二个是他们的数据)。我在一个模态里有这个,所以有很多状态更新。我继续遇到状态问题,如果用户单击标题,它不会让我隐藏或显示嵌套的平面列表数据。

我是否试图强迫它做一些它不适合的事情?或者这是一个简单的任务,我只是没有正确调用 onPress 函数?

我遇到的一些错误"cannot update a component from inside the function body of a different component." "this synthetic event is reused for performance reasons. is you're seeing this you're accessing the property "bubbles"..."

const CustomModal = props => {
  const [openedFilter, setOpenedFilter] = useState(false);
  const [categoryPosition, setCategoryPosition] = useState(0);
    
  const renderSubItem = ({ item }) => {
    return (
      <Sview flex={1} fontSize={30} marginTop={50}>
        <Stext onPress={props.onClose}>{item}</Stext>
      </Sview>
    );
  };

  const openFilter = position => {
    setCategoryPosition(position);
    setOpenedFilter(true);
  };

  return (
    <SafeAreaView style={styles.container}>
      <Modal
        animationType="slide"
        visible={props.visible}
        onRequestClose={props.onClose}
      >
        <FlatList
          data={props.data}
          renderItem={({ item }) => (
            <Sview>
              <Pressable onPress={openFilter}>
                <Stext>{item.title}</Stext>
              </Pressable>
              {openedFilter && (
                <FlatList
                  data={item.subData[categoryPosition]}
                  renderItem={renderSubItem}
                  keyExtractor={subItem => subItem.id}
                />
              )}
            </Sview>
          )}
          keyExtractor={item => item.id}
        />

        <Pressable
          style={[styles.button, styles.buttonClose]}
          onPress={props.onClose}
        >
          <Stext style={styles.textStyle}>Hide Modal</Stext>
        </Pressable>
      </Modal>
    </SafeAreaView>
  );
};
4

0 回答 0